在Docker中,映射外部文件夹(也称为挂载主机目录或共享驱动器)是一种常见的操作,它允许你在容器和宿主机之间共享数据和文件,这样做可以方便地在容器内外传输数据,同时也便于备份和持久化数据,以下是如何使用Docker映射外部文件夹的详细步骤:
使用v
或volume
标志
当你运行一个Docker容器时,可以使用v
或volume
标志来指定一个外部文件夹的路径,并将其映射到容器内部的一个目录,基本语法如下:
docker run v /host/directory:/container/directory it container_image
这里,/host/directory
是宿主机上的目录,而/container/directory
是你希望在容器内映射的目录。
使用dockercompose
如果你在使用dockercompose
来管理你的容器,你可以在dockercompose.yml
文件中指定卷。
version: '3' services: web: image: my_web_app volumes: /host/directory:/container/directory
在这个例子中,my_web_app
是你的容器镜像,/host/directory
和/container/directory
分别是宿主机和容器内的目录。
使用Docker CLI创建卷
除了在运行容器时映射卷,你还可以使用Docker CLI先创建一个独立的卷,然后将其挂载到容器上,这可以通过以下命令完成:
1、创建一个新的卷:
“`
docker volume create my_volume
“`
2、将卷挂载到一个正在运行的容器上:
“`
docker run v my_volume:/container/directory it container_image
“`
或者,如果容器已经运行,你可以使用docker run
的mount
选项:
docker run mount source=my_volume,target=/container/directory it container_image
使用Dockerfile
如果你正在构建自己的Docker镜像,并且需要在镜像中包含对外部文件夹的映射,你可以在Dockerfile
中使用VOLUME
指令来定义一个可以从外部挂载的点。
FROM ubuntu VOLUME /container/directory
当基于这个镜像启动容器时,你仍然需要使用v
或volume
标志来映射实际的外部文件夹。
注意事项
确保宿主机上的目录路径存在。
映射的宿主机目录应该是空的,因为容器内的数据会覆盖宿主机上的数据。
映射的目录在容器内部应该是读写权限。
使用dockercompose
时,确保版本号至少为3
,以支持新的卷特性。
相关问答FAQs
Q1: 如何在Docker中映射一个只读的外部文件夹?
A1: 要映射一个只读的外部文件夹,你可以在docker run
命令中使用:ro
后缀。
docker run v /host/directory:/container/directory:ro it container_image
这将确保容器内的目录是只读的,任何尝试写入该目录的操作都会失败。
Q2: 如何查看当前运行的容器的卷映射情况?
A2: 你可以使用docker inspect
命令来查看特定容器的详细信息,包括卷映射。
docker inspect <container_id> | grep "Mountpoint"
这将显示容器的卷映射信息,包括宿主机和容器内的路径。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/624287.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复