前言
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 容器与宿主机共享数据的方法有多种,其中数据卷是最为常用的一种。数据卷可以方便地将容器内的数据与宿主机进行共享。除此之外,还可以将宿主机文件挂载到容器内,或者将容器内的文件复制到宿主机上。在实际开发中,应该针对不同的场景选择合适的方法进行数据共享。
参考链接
- Docker documentation | Volumes
- Docker documentation | Manage data in Docker
- Docker Volume vs Host Volume explained
- How to Share Data Between Docker Containers
- Sharing files between host and a Docker container
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6595532ceb4cecbf2d981fe9