专业的编程技术博客社区

网站首页 > 博客文章 正文

告别繁琐!Docker 容器一键转 Compose 神器,迁移像搭乐高一样简单

baijin 2025-05-22 09:08:31 博客文章 1 ℃ 0 评论

还在为手动编写 Docker Compose 文件而头疼?这款神器能帮你一键搞定,将现有 Docker 容器信息转换为 docker-compose.yaml 文件,轻松实现容器迁移和管理!

项目直达: coracoo/docker2compose[1]


核心功能,解决你的痛点:

1 智能网络分组,告别手动配置: 自动分析容器间连接(兼容自定义网络/Links),无需手动梳理。 将有关联的容器自动分组,生成独立的 docker-compose.yaml 文件,结构清晰。

2 全参数覆盖,保留你的配置: - 支持提取镜像、端口、卷、环境变量、设备挂载等 23+ 配置项,不遗漏任何细节。 - 保留特权模式、cap_add 等高级参数,满足你的个性化需求。 - 智能过滤极空间 NAS 兼容性差的参数(如性能限制),避免潜在问题。


使用姿势,简单易上手:

启用前确保系统安装了docker和docker compose。

方式一:Docker 部署

docker run -itd --name d2c \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /宿主机存储路径:/app/compose \
  -e NAS=debian \ # 可选,默认debian,详见下文说明
  -e CRON="0 */12 * * *" \ # 可选,默认每天0点起,每天12小时执行一次,详见下文说明
  -e NETWORK=true \ # 可选,默认true,详见下文说明
  -e TZ=Asia/Shanghai \ # 可选,默认Asia/Shanghai
  # 阿里云镜像源,国内选择
  crpi-xg6dfmt5h2etc7hg.cn-hangzhou.personal.cr.aliyuncs.com/cherry4nas/d2c:latest
  # github镜像源
  # ghcr.io/coracoo/d2c:latest

重要提示: 请务必将 /宿主机存储路径 替换为你实际的目录,例如 /opt/d2c-output,用于存放生成的 Compose 文件。

方式二:Docker Compose 部署(推荐)

services:
    d2c:
        # 阿里云镜像源,国内选择
        image: crpi-xg6dfmt5h2etc7hg.cn-hangzhou.personal.cr.aliyuncs.com/cherry4nas/d2c:latest
        # github镜像源
        # image: ghcr.io/coracoo/d2c:latest
        container_name: d2c
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock:ro
            - /opt/d2c-output:/app/compose
        environment:
            - NAS=debian
            - CRON="0 */12 * * *"
            - NETWORK=true
            - TZ=Asia/Shanghai

转换完成文件输出至/opt/d2c-output目录

环境变量说明:

  • NAS: 指定NAS系统类型 debian: 默认值,生成完整配置 zos: 极空间系统,不生成command和entrypoint配置

其他变量请查看项目说明,这里就不详细说明了


生成文件说明

文件类型

命名规则

独立容器

{容器名}.yaml

容器组

{首容器名}-group.yaml

所有文件保存在compose/子目录


重新部署容器

接下来,我们就要将容器以compose的方式重新部署一遍, 在部署之前,我们需要确保所有的存量docker都是停止状态。为了确保原先容器的安全,强烈建议大家修改一下容器的名称 container_name 这里,确保和原先的容器不冲突

选择刚才导出的yaml文件导入。测试一下容器有没有问题,没问题,那么就可以把原来单独部署的容器删掉,改用compose部署的容器了。

如果要修改容器信息,也很简单。来到具体compose项目页面,修改代码、保存、重新构建一步到位。

使用注意事项:

  1. Docker 命令行权限: 确保你拥有 Docker 命令行执行权限,以便工具能够访问 Docker 守护进程。
  2. 默认网络: 默认网络会被标记为 external: true,你需要手动预先创建这些网络。
  3. 人工校对: 在个别复杂场景下,建议人工校对生成的 YAML 文件,确保配置的准确性。

还在等什么?立即体验这款神器,让容器迁移变得轻松愉快!

引用链接

[1]coracoo/docker2compose: https://github.com/coracoo/docker2compose

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表