
在Docker的日常使用中,我们常常遇到这样的场景:通过反复调试docker run
命令启动了一个包含复杂参数的容器(比如挂载了多个卷、设置了环境变量、配置了网络端口),最终需要将其转化为可复用的docker-compose.yml
文件。
手动转换不仅耗时,还容易遗漏参数。今天介绍的coracoo/docker2compose
开源项目,正是为解决这一痛点而生——它能将复杂的docker run
命令智能转换为完整的Docker Compose
配置!

简介
docker2compose
是一个开源的 Docker Compose
文件生成工具。它的核心功能是读取 NAS 或服务器中已运行的 Docker 容器信息,自动分析容器间的网络关系,并根据规则生成对应的docker-compose.yaml
文件。
这款工具的设计初衷是解决极空间私有云用户的容器迁移痛点,但实际上兼容主流 NAS 系统和 Linux 服务器,甚至支持 ARM 架构设备(如树莓派)。
功能特点
- 分析容器之间的网络关系(自定义network和link连接)
- 为每组容器生成对应的
docker-compose.yaml
文件(根据首个容器名称) - 网络(
host/bridge/macvlan
单独配置,其它网络根据名称在一起) command
和entrypoint
(在ZOS系统中不生成)
实战
场景
从一条命令到生产级Compose配置
假设我们调试出一个启动PostgreSQL容器的命令:
docker run -d \
--name db \
-v pgdata:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=secret \
-p 5432:5432 \
--network myapp \
postgres:15
使用docker2compose
转换
docker2compose "docker run ..." > docker-compose.yml
输出结果
version: '3.8'
services:
db:
image:postgres:15
container_name:db
environment:
-POSTGRES_PASSWORD=secret
volumes:
-pgdata:/var/lib/postgresql/data
networks:
-myapp
ports:
-"5432:5432"
volumes:
pgdata:
networks:
myapp:
driver:bridge
写在最后
Docker Compose已成为本地开发和测试环境的事实编排标准,其声明式配置带来的可重复性和可维护性是脚本难以比拟的。docker2compose通过弥合命令式调试(docker run)与声明式配置(YAML)之间的鸿沟,显著降低了Compose的采用门槛。
无论是刚接触容器的新手,还是管理复杂微服务架构的资深工程师,这个不足10MB的小工具都可能成为你效率提升的“秘密武器”。
开源地址
https://github.com/coracoo/docker2compose
构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!
文明发言,以交流技术
、职位内推
、行业探讨
为主
广告人士勿入,切勿轻信私聊,防止被骗
加我好友,拉你进群点下方的“❤”支持我们,非常感谢!