在使用 Docker 进行应用程序开发和部署时,有时需要在容器内部与宿主机器进行文件交互。这篇文章将介绍 Docker 容器内部与宿主机器的文件交互方式,包括数据卷和绑定挂载两种方式,并提供示例代码。
数据卷
数据卷是将宿主机器的目录或文件挂载到容器内部的目录,从而实现容器内部与宿主机器的文件交互。数据卷可以在容器创建时指定,也可以在容器运行时动态添加。
创建容器时指定数据卷
使用 docker run
命令创建容器时,可以使用 -v
参数指定数据卷。例如,将宿主机器的 /home/user/app
目录挂载到容器内部的 /app
目录:
docker run -v /home/user/app:/app myimage
这样,在容器内部就可以访问宿主机器的 /home/user/app
目录,而且对该目录的修改也会同步到宿主机器上。
运行中动态添加数据卷
使用 docker volume create
命令创建一个数据卷,例如:
docker volume create myvolume
然后,使用 docker run
命令启动容器时,使用 --mount
参数将数据卷挂载到容器内部的目录。例如,将 myvolume
数据卷挂载到容器内部的 /data
目录:
docker run --mount source=myvolume,target=/data myimage
这样,在容器内部就可以访问 myvolume
数据卷,而且对该数据卷的修改也会同步到宿主机器上。
示例代码
下面是一个使用数据卷的示例代码,创建一个名为 mynginx
的 Nginx 容器,并将宿主机器的 /home/user/nginx
目录挂载到容器内部的 /etc/nginx/conf.d
目录:
docker run -d --name mynginx -p 80:80 \ -v /home/user/nginx:/etc/nginx/conf.d nginx:latest
绑定挂载
绑定挂载是将宿主机器的目录或文件直接挂载到容器内部的目录,从而实现容器内部与宿主机器的文件交互。绑定挂载只能在容器创建时指定。
创建容器时指定绑定挂载
使用 docker run
命令创建容器时,可以使用 -v
参数指定绑定挂载。例如,将宿主机器的 /home/user/app
目录绑定挂载到容器内部的 /app
目录:
docker run -v /home/user/app:/app:ro myimage
这样,在容器内部就可以访问宿主机器的 /home/user/app
目录,但对该目录的修改不会同步到宿主机器上。
示例代码
下面是一个使用绑定挂载的示例代码,创建一个名为 mynginx
的 Nginx 容器,并将宿主机器的 /home/user/nginx
目录绑定挂载到容器内部的 /etc/nginx/conf.d
目录:
docker run -d --name mynginx -p 80:80 \ -v /home/user/nginx:/etc/nginx/conf.d:ro nginx:latest
总结
本文介绍了 Docker 容器内部与宿主机器的文件交互方式,包括数据卷和绑定挂载两种方式。数据卷可以在容器创建时指定,也可以在容器运行时动态添加;而绑定挂载只能在容器创建时指定。在实际应用中,需要根据具体需求选择合适的方式进行文件交互。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6509d76395b1f8cacd464f5d