是的,Docker 可以挂载单个文件而不仅仅是目录。这是通过 Docker 的 -v
或 --mount
参数实现的。
-v
参数(传统方式)docker run -v /宿主机路径/文件:/容器路径/文件 镜像名
示例:
docker run -v /home/user/config.ini:/app/config.ini myapp
--mount
参数(推荐方式)docker run --mount type=bind,source=/宿主机路径/文件,target=/容器路径/文件 镜像名
示例:
docker run --mount type=bind,source=/home/user/config.ini,target=/app/config.ini myapp
文件必须预先存在:在宿主机上,被挂载的文件必须已经存在,否则 Docker 会创建一个目录而不是文件。
权限问题:确保容器内的进程有权限读写该文件。
文件更新:对宿主机文件的修改会立即反映到容器内,反之亦然。
Windows 路径:在 Windows 上需要使用正确的路径格式,如 //c/Users/user/config.ini
。
只读挂载:如果需要防止容器修改文件,可以添加 :ro
标志:
docker run -v /host/file:/container/file:ro image
docker run -v $(pwd)/app.conf:/etc/myapp/app.conf myapp
docker run -v /etc/ssl/private/key.pem:/etc/ssl/private/key.pem nginx
通过文件挂载,你可以方便地在容器外管理配置文件、密钥等,而无需重建镜像。