Created状态表示容器已创建但未启动,仅注册元数据、无进程、无网络、无挂载,是安全修改挂载配置的窗口期;可通过docker inspect提取配置后重新run实现预挂载,或用docker-compose统一声明管理。
容器处于 created 状态(即已创建但未启动),意味着它尚未运行,但镜像、网络、挂载点等元数据已写入 docker 存储系统。此时无法直接通过 docker run 添加挂载 —— 因为 run 是创建并启动的组合动作。但你可以用“先建后改”的方式,在不丢失已有配置的前提下,安全预挂载外部配置文件。这属于生产环境常用技巧,关键在于绕过启动阶段,直接操作容器配置。
确认容器当前状态并停止干扰
先确保目标容器确实处于 Created 状态(非 Exited 或 Running):
- 执行
docker ps -a | grep your-container-name,观察 STATUS 列是否为 Created - 若已是 Exited,可先
docker rm -f your-container-name清理;若需保留原配置,跳至下一部分“备份原始配置” - Created 状态下容器无进程、无网络、无挂载,是修改挂载定义最安全的窗口
使用 docker commit + 重新 run 实现“预挂载”效果
虽然不能直接编辑已创建容器的挂载配置(Docker 不开放 runtime 修改 volume 的 API),但可通过“导出→重建”策略达成等效目标:
- 用
docker inspect your-container-name提取当前容器的完整配置,重点关注:HostConfig.Binds(现有挂载)、Config.Image、HostConfig.PortBindings、Config.Env - 将提取的关键参数保存为 shell 变量或脚本,例如:
IMAGE=$(docker inspect your-container-name -f '{{.Config.Image}}')PORTS=$(docker inspect your-container-name -f '{{.HostConfig.PortBindings}}') - 然后用原参数 + 新增
-v /host/conf:/container/conf:ro重新运行:docker run -d --name your-container-name-new -p 27017:27017 -v /host/conf:/etc/mongo.conf:ro -v /host/data:/data/db mongo:4.0 --config /etc/mongo.conf - 验证无误后,删除旧容器:
docker rm your-container-name,再重命名新容器(可选):docker rename your-container-name-new your-container-name
进阶:离线修改容器 JSON 配置(仅限调试/紧急修复)
该方法不推荐日常使用,但在容器无法启动、又必须复用原有 ID 和网络设置时可行(需停 dockerd):
- 停止 Docker 服务:
sudo systemctl stop docker - 定位容器配置文件:
/var/lib/docker/containers/<container-id>/hostconfig.json - 在
Binds数组中追加挂载项,格式为:"/host/path:/container/path:ro" - 同时检查
Config.Volumes是否包含对应路径(如缺失,需一并补全) - 保存后重启 Docker:
sudo systemctl start docker,再docker start容器 - ⚠️ 注意:手动改 JSON 风险高,易导致容器无法启动;务必提前备份整个
/var/lib/docker/containers/<id>目录
最佳实践:用 docker-compose.yml 统一管理挂载定义
避免陷入“Created 状态挂载困境”的根本解法,是放弃裸命令,改用声明式编排:
- 编写
docker-compose.yml,明确声明所有挂载:
services:
mongo:
image: mongo:4.0
ports: ["27017:27017"]
volumes:
- ./conf/mongodb.conf:/etc/mongo.conf:ro
- ./data:/data/db
command: [--config, /etc/mongo.conf]
- 执行
docker-compose up -d,自动创建并启动,所有挂载一次性生效 - 后续只需改 YAML 文件 +
docker-compose up -d --force-recreate即可更新挂载,无需手动干预 Created 状态


















