Docker 容器与宿主机数据共享的方法

前言

Docker 是一款非常流行的容器化技术,对于前端开发而言,使用 Docker 可以帮助我们更方便地进行开发、测试和部署,提高开发效率和软件质量。在 Docker 中,容器是一个独立的运行环境,但是有时候我们需要与宿主机共享文件夹或数据,本文将介绍 Docker 容器与宿主机数据共享的方法。

共享数据卷

Docker 容器与宿主机共享数据的一种方法是使用数据卷,数据卷是一个可独立于容器之外存在的持久化数据存储机制。使用数据卷可以方便地将容器内的数据与宿主机进行共享。数据卷可以是宿主机上的一个目录或文件,也可以是 Docker Volume 中的一个卷。

创建数据卷

创建数据卷有多种方法,可以手动创建,也可以通过 Docker CLI 创建。

手动创建数据卷:

$ mkdir /path/on/host
$ docker run -d -v /path/on/host:/path/in/container nginx

通过 Docker CLI 创建数据卷:

$ docker volume create mydata
$ docker run -d -v mydata:/path/in/container nginx

上述命令中,/path/on/host 是宿主机上的目录,/path/in/container 是容器内的目录,mydata 是 Docker Volume 中的卷名。

挂载数据卷

已有数据卷时,可以通过 -v 参数将数据卷挂载到容器内。

$ docker run -d -v mydata:/path/in/container nginx

查看数据卷

可以通过 docker volume ls 命令查看所有数据卷。

$ docker volume ls
DRIVER              VOLUME NAME
local               mydata

使用 Dockerfile 创建数据卷

可以在 Dockerfile 中使用 VOLUME 命令来创建数据卷。

FROM nginx
VOLUME /path/in/container

例子

以下是通过 Docker Volume 创建数据卷的例子。

使用 docker volume create 命令创建数据卷。

$ docker volume create mydata
mydata

使用 docker run 命令启动容器,并挂载数据卷。

$ docker run -d -v mydata:/usr/share/nginx/html --name mynginx nginx

在宿主机上创建一个 index.html 文件,并将其复制到 mydata 数据卷中。

$ echo "Hello world" > index.html
$ docker cp index.html mynginx:/usr/share/nginx/html/index.html

通过浏览器访问 http://localhost,可以看到输出了 Hello world

共享文件

除了使用数据卷,还可以通过共享文件的方式,在容器和宿主机之间进行数据传输。

将宿主机文件挂载到容器内

可以使用 -v 参数将宿主机目录挂载到容器内。

$ docker run -d -v /path/on/host:/path/in/container nginx

其中 /path/on/host 是宿主机上的目录,/path/in/container 是容器内的目录。

将容器文件复制到宿主机

可以使用 docker cp 命令将容器内的文件复制到宿主机上。

$ docker cp mycontainer:/path/in/container /path/on/host

其中 /path/in/container 是容器内的目录,/path/on/host 是宿主机上的目录。

例子

以下是将宿主机文件挂载到容器内的例子。

在宿主机上创建一个 index.html 文件。

$ echo "Hello world" > index.html

使用 docker run 命令启动容器,并挂载宿主机目录。

$ docker run -d -v $PWD:/usr/share/nginx/html --name mynginx nginx

使用浏览器访问 http://localhost,可以看到输出了 Hello world

总结

Docker 容器与宿主机共享数据的方法有多种,其中数据卷是最为常用的一种。数据卷可以方便地将容器内的数据与宿主机进行共享。除此之外,还可以将宿主机文件挂载到容器内,或者将容器内的文件复制到宿主机上。在实际开发中,应该针对不同的场景选择合适的方法进行数据共享。

参考链接

  1. Docker documentation | Volumes
  2. Docker documentation | Manage data in Docker
  3. Docker Volume vs Host Volume explained
  4. How to Share Data Between Docker Containers
  5. Sharing files between host and a Docker container

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6595532ceb4cecbf2d981fe9


纠错反馈