在 Docker 中,手动指定卷映射位置(也称为绑定挂载)是一种将主机上的特定目录或文件映射到容器中的方法。以下是详细的操作方法:
docker run -v /host/path:/container/path [其他选项] image_name
# 将主机的 /home/user/data 目录映射到容器的 /app/data 目录
docker run -v /home/user/data:/app/data my_image
# 将主机的单个文件映射到容器中
docker run -v /home/user/config.json:/app/config/config.json my_image
# 使用相对于当前工作目录的路径
docker run -v $(pwd)/data:/app/data my_image
# 默认是读写权限 (rw)
docker run -v /host/path:/container/path:rw my_image
# 设置为只读权限 (ro)
docker run -v /host/path:/container/path:ro my_image
docker run \
-v /host/path1:/container/path1 \
-v /host/path2:/container/path2 \
my_image
version: '3'
services:
my_service:
image: my_image
volumes:
- /host/path:/container/path
- ./relative/path:/container/otherpath
权限问题:容器内的进程通常以 root 用户运行,可能会修改主机文件的所有权。可以使用 :Z
或 :z
后缀来设置 SELinux 标签。
路径存在性:如果主机路径不存在,Docker 会自动创建目录(但不适用于文件)。
Windows 路径:在 Windows 上需要使用适当的路径格式:
docker run -v C:\path\to\dir:/container/path my_image
特殊字符:路径中包含空格或特殊字符时,可能需要引号或转义。
性能影响:在 macOS 和 Windows 上,由于 Docker 运行在虚拟机中,绑定挂载可能会有性能开销。
通过以上方法,您可以灵活地控制 Docker 容器与主机系统之间的文件共享和持久化存储。