本工具用于读取 NAS 中存量 Docker 容器信息,自动生成对应的 docker-compose.yaml 文件。
它会根据容器之间的网络关系(自定义网络或link连接)将相关容器分组,并为每组容器生成一个独立的docker-compose.yaml文件。
1️⃣ : 中文docker项目集成项目: https://github.com/coracoo/awesome_docker_cn
2️⃣ : docker转compose:https://github.com/coracoo/docker2compose
3️⃣ : 容器部署iSCSI:https://github.com/coracoo/d-tgtadm/
4️⃣ : 容器端口检查工具: https://github.com/coracoo/DockPorts/
- 🔐 用户系统:新增完整的用户系统,默认账号
admin/admin123,保护信息安全 - 📊 调度器:取消了 Cron&Python调度器 并行的方式,统一使用 Python 调度器;设置后需要手动先开启定时任务;
- 📝 日志:调度器执行日志记录到
/app/logs/scheduler.log - 🎨 前端:采用了手工画风格的界面;增加搜索功能;优化默认排序
- 🙌 配置参数:增加了
关键词过滤;优化了网络、健康检测、入口点、命令、权限的展示选择,现在可以更自由的配置生成的文档
- 清理冗余文件,减少项目体积
- 优化 GitHub Actions 工作流
- 纯AI打造,有问题提issuse,特殊容器贴原docker cli
- 读取系统中所有Docker容器信息
- 分析容器之间的网络关系(自定义network和link连接)
- 根据网络关系将相关容器分组
- 为每组容器生成对应的docker-compose.yaml文件(根据首个容器名称)
- 智能时区管理:自动读取配置文件中的时区设置并应用到容器系统,确保定时任务在正确时区执行
- 支持提取容器的各种配置,包括:
- 容器名称
- 镜像
- 端口映射
- 环境变量
- 数据卷(volume/bind)
- 网络(host/bridge/macvlan单独配置,其它网络根据名称在一起)
- 重启策略
- 特权模式
- 硬件设备挂载
- cap_add 能力
- command和entrypoint
- 健康检测
- 其他配置等等
部署完成后,可通过浏览器访问Web界面:
- 本地访问:
http://localhost:5000 - 局域网访问:
http://你的IP地址:5000
- 📊 容器管理:实时查看所有Docker容器状态,按网络关系自动分组
- 📄 Compose预览:直接在界面中查看生成的docker-compose.yaml文件内容
- ⏰ 调度器监控:实时监控定时任务状态,查看执行日志
- 🚀 立即执行:一键执行compose文件生成任务
- 🗂️ 文件管理:浏览和管理生成的compose文件目录
- 📝 日志查看:查看详细的执行日志,支持清空日志功能
- 🎨 响应式设计:采用三栏式布局(容器列表:文件列表:编辑器 = 1:1:2),适配不同屏幕尺寸
- 🔘 优化界面:"关于我"按钮采用白底设计,提供更好的视觉对比度
"// CRON": "定时执行配置: '0 2 * * *'(每天凌晨2点), 'manual'(手动), 'once'(执行一次), 或自定义CRON",
"CRON": "0 2 * * *",
"// NETWORK": "控制bridge网络配置的显示方式: true(显示) 或 false(隐藏)",
"NETWORK": "true",
"// SHOW_HEALTHCHECK": "控制healthcheck配置的显示方式: true(显示) 或 false(隐藏)",
"SHOW_HEALTHCHECK": "true",
"// SHOW_CAP_ADD": "控制cap_add配置的显示方式: true(显示) 或 false(隐藏)",
"SHOW_CAP_ADD": "true",
"// SHOW_COMMAND": "控制command配置的显示方式: true(显示) 或 false(隐藏)",
"SHOW_COMMAND": "true",
"// SHOW_ENTRYPOINT": "控制entrypoint配置的显示方式: true(显示) 或 false(隐藏)",
"SHOW_ENTRYPOINT": "true",
"// ENV_FILTER_KEYWORDS": "环境变量过滤关键词,逗号分隔。匹配这些关键词的环境变量将被过滤掉",
"ENV_FILTER_KEYWORDS": "VERSION",
"// TZ": "时区设置,如Asia/Shanghai、Europe/London等",
"TZ": "Asia/Shanghai"
/app/compose: 脚本输出目录,默认值为/app/compose/app/compose/YYYY_MM_DD_HH_MM: 定时任务输出目录,格式为YYYY_MM_DD_HH_MM,例如2023_05_04_15_00/app/logs:定时任务日志
- 对于单个独立的容器,生成的文件名格式为:
{容器名}.yaml - 对于有网络关系的容器组,生成的文件名格式为:
{第一个容器名前缀}-group.yaml - 所有生成的文件都会保存在
compose/时间戳目录下
- 该工具需要Docker命令行权限才能正常工作
- 生成的docker-compose.yaml文件可能需要手动调整以满足特定需求
- 通过Docker运行时,会将宿主机的Docker套接字挂载到容器中,以便获取容器信息
- 工具支持定时执行,默认
once(只执行一次),可通过CRON环境变量自定义执行时间 - 时区配置重要提醒:
- 容器启动时会自动读取
config.json中的TZ配置并应用到系统 - 如果定时任务时间不准确,请检查TZ配置是否正确
- 可通过
docker exec d2c-container date命令验证容器内时区是否正确
- 容器启动时会自动读取
- 关于Macvlan网络,DHCP的理论上会展示
macvlan:{}, - 对于使用默认bridge网络但没有显式link的容器,它们可能会被分到不同的组中
- 工具会将自定义网络标记为
external: true,因为它假设这些网络已经存在
linux/amd64linux/arm64linux/arm/v7
🔻docker cli启动
docker run -itd --name docker2compose \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /{path}/d2c/compose:/app/compose \
-v /{path}/d2c/logs:/app/logs \
-v /{path}/d2c/config:/app/config \
-p 5000:5000 \
-e TZ=Asia/Shanghai \
# -e DOCKER_API_VERSION=1.41 \ # 群晖等 docker版本比较老的,加这个参数控制 docker api 版本
coracoo/docker2compose:latest🔻docker compose启动
services:
d2c:
image: coracoo/docker2compose:latest
container_name: docker2compose
ports:
- "5000:5000" # Web UI端口
environment:
- TZ=Asia/Shanghai # 可选,时区设置
- DOCKER_API_VERSION=1.41 # 群晖等 docker版本比较老的,加这个参数控制 docker api 版本
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /{path}/d2c/compose:/app/compose
- /{path}/d2c/logs:/app/logs
- /{path}/d2c/config:/app/config


