绑定挂载使用 -v 参数,格式为 -v /宿主机绝对路径:/容器内绝对路径,两边必须为绝对路径,宿主机路径需提前创建完整(docker 不自动创建中间目录),支持挂载文件或目录,加 :ro 可设为只读,挂载后容器内路径内容完全覆盖镜像原有内容。
直接用 -v 参数,格式为 -v /宿主机绝对路径:/容器内绝对路径,就能完成绑定挂载。关键在于两边都必须是绝对路径,且宿主机路径若不存在,docker 会自动创建该目录(但不会创建父级中间路径)。
挂载前确认宿主机路径有效
宿主机路径必须以 / 开头,比如 /opt/myapp/conf 或 /home/user/data。如果路径中某一级不存在(如 /a/b/c 中 /a/b 未创建),Docker 启动时会报错,不会自动补全中间层级。
- 推荐提前手动创建完整路径:
mkdir -p /host/config - 可配合
ls -ld /host/config验证目录权限和存在性 - 避免使用相对路径、波浪号(
~)或环境变量(如$HOME),Docker 不解析它们
挂载单个文件或整个目录均可
绑定挂载不区分文件和目录,只要路径写对,Docker 都按实际对象处理:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 挂载单个配置文件:
docker run -v /host/nginx.conf:/etc/nginx/nginx.conf nginx - 挂载整个配置目录:
docker run -v /host/conf.d:/etc/nginx/conf.d nginx - 挂载后,容器内目标路径的内容完全由宿主机路径内容决定,原镜像中对应位置的文件会被覆盖(不是合并)
加 :ro 实现只读挂载
防止容器内进程意外修改宿主机文件,可在挂载末尾加上 :ro 标志:
- 例如:
-v /host/app.yml:/app/config.yml:ro - 容器内对该路径只有读权限,尝试写入会报
Permission denied - 注意:只读仅作用于容器视角,宿主机侧仍可正常读写
验证挂载是否生效
容器启动后,通过以下方式快速确认:
- 运行
docker inspect 容器名 | jq '.[0].Mounts'(需安装 jq)或直接查Mounts字段,看Type是否为bind,Source和Destination是否匹配预期 - 进入容器:
docker exec -it 容器名 sh,然后ls -l /容器内路径检查内容是否与宿主机一致 - 查看容器日志,确认服务是否成功加载挂载进来的配置(如 Nginx 启动时打印 “using config file” 路径)










