不能直接导出 docker compose 服务为可复用的 docker-compose.yml,但可通过 docker-compose config 查看解析后的最终配置、docker container inspect 提取运行时元数据、docker-compose ps -v 查看挂载与网络映射来分场景获取结构化信息。

不能直接“导出” Docker Compose 服务的运行配置与元数据为可复用的 docker-compose.yml 文件,但可以通过组合命令获取接近等效的结构化信息——关键在于区分“当前运行状态”和“原始定义”。
用 docker-compose config 查看解析后的最终配置
这是最常用、最可靠的方式,它会把 docker-compose.yml(含所有覆盖文件如 override.yml)合并、变量替换、环境展开后,输出标准化的 YAML 结构:
- 运行
docker-compose config(在 compose 文件所在目录),输出的是实际生效的完整服务定义,包括端口、卷、网络、环境变量等 - 加
--resolve-image-digests可显示镜像的完整 digest,便于确定确切版本 - 加
> docker-compose.resolved.yml可保存为新文件,作为备份或迁移参考
用 docker container inspect 提取容器级运行时元数据
如果原始 docker-compose.yml 已丢失或不完整,可通过正在运行的容器反推部分配置:
- 先查容器名:
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" - 再查详细信息:
docker container inspect myapp_web_1 - 重点关注字段:
HostConfig.PortBindings(端口映射)、Mounts(挂载卷路径与源)、NetworkSettings.Networks(所属网络及 IP)、Config.Env(环境变量) - 注意:该方式无法还原 service 依赖关系、restart 策略、healthcheck、depends_on 逻辑等高层编排语义
用 docker-compose ps -v 查看挂载与网络映射详情
这个命令能快速列出各服务关联的卷和网络,比 inspect 更聚焦于编排层关心的资源绑定:
-
docker-compose ps -v显示每个服务容器挂载的本地路径、命名卷名、绑定模式(ro/rw) -
docker-compose network ls和docker-compose network inspect <name></name>可确认服务间网络互通性及网关设置 - 配合
docker volume ls和docker volume inspect <vol></vol>能补全持久化存储的驱动与位置
注意事项与常见误区
导出不是“一键生成可部署 yml”,而是分场景选择合适方法:
- 不要依赖 docker export / docker import:它们只导出容器文件系统快照,完全丢失 compose 的服务定义、网络策略、重启行为等元数据
- docker commit 也不能替代 compose 导出:它生成的是镜像,而非服务配置;且 commit 不保留 volumes、ports、env 等运行时参数
- 若需跨环境重建,优先保留原始 docker-compose.yml + .env 文件:这才是真正的“配置即代码”,inspect 或 config 输出仅作验证或应急恢复之用











