Docker容器创建后如何挂载主机文件夹?
容器创建好后怎么挂载主机文件夹?
方法一:修改配置文件重启容器(适合允许停止容器的场景)
- 先停止目标容器:
docker stop <容器名/容器ID> - 找到容器的配置目录,通常位于
/var/lib/docker/containers/<容器ID>下,定位到config.v2.json和hostconfig.json两个文件 - 编辑
hostconfig.json,找到Binds数组,添加挂载规则,格式为/主机路径:/容器内路径,示例:"Binds": [ "/home/my-project/data:/app/data", // 保留原有挂载项不动 ] - 编辑
config.v2.json,找到MountPoints对象,添加对应挂载配置:"/app/data": { "Source": "/home/my-project/data", "Destination": "/app/data", "RW": true, "Type": "bind", "Propagation": "rprivate", "Spec": { "Type": "bind", "Source": "/home/my-project/data", "Target": "/app/data" } } - 保存文件后重启Docker服务:
systemctl restart docker,最后启动容器:docker start <容器名/容器ID>
方法二:新建容器迁移数据(更稳妥,无配置修改风险)
不想触碰配置文件的话,采用数据迁移的方式更安全:
- 先将原容器内需要保留的数据复制到主机:
docker cp <原容器名/ID>:/容器内数据路径 /主机临时存储路径 - 删除原容器(若无需保留):
docker rm <原容器名/ID> - 使用
docker run创建新容器并挂载目标主机文件夹,再将临时数据复制回新容器:# 创建带挂载的新容器 docker run -d -v /主机目标挂载路径:/容器内对应路径 --name <新容器名> <镜像名称> # 把临时数据复制进新容器 docker cp /主机临时存储路径/. <新容器名>:/容器内对应路径/
注意事项
- 修改配置文件存在一定风险,操作前务必备份容器配置文件和数据
- 挂载前确保主机路径已存在,否则Docker会自动创建对应目录(挂载单个文件时需格外注意)
- 运行中的容器无法通过常规命令直接添加挂载,必须停止容器或采用上述两种方法
内容的提问来源于stack exchange,提问作者Doerthous
相关产品推荐
相关产品推荐

