docker与docker-compose版本对应

[复制链接]
发表于 2026-10-6 10:53:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、docker 和 docker-compose 各自管什么

先厘清两个工具的定位:docker 负责管理单个容器(构建镜像、跑容器、管网络和数据卷);docker-compose 负责编排多个容器——一个项目里常常有应用、数据库、缓存、Nginx 一起跑,compose 用一个配置文件把这层关系写下来,一条命令把整套起起来。两者是分开的两个工具,但协作非常紧密。

版本不完全是硬绑定的关系,但新版本 compose 会引入新特性或行为调整,这些特性往往要求更高版本的 docker 引擎来支撑。所以保持两者版本兼容,是少踩坑的关键。

二、两代 compose 的差别

历史上 compose 有 v1 和 v2 两代,差别不小:

  • v1 系列(那个老的 docker-compose 独立二进制):主要面向 Docker 早期版本做的适配,需要 Docker 引擎 1.10 以上。它用 Python 写的,更新已经停了。
  • v2 系列:用 Go 语言完全重写,命令行接口也换了。它是作为 docker 的一个子命令来提供的,配置格式(yaml)和 v1 大体兼容,但功能更强、启动更快。v2 要求 Docker 引擎 18.06 及以上。

现在装 Docker 一般直接带的就是 compose v2,对应的可执行命令是 docker compose(不带横杠);老镜像文档里写的 docker-compose 是 v1 时代的写法,很多新系统上这个命令其实是个 wrapper,实际转调 v2。

三、版本对应关系的实用建议

挑组合的时候记住三条就行:

  • 用 Docker 18.06 或更早的引擎:还得用 compose v1 那套老组合,注意 v1 已经不再维护。
  • Docker 18.06 到 20.x:compose v2 可用,推荐直接上 v2。
  • Docker 20.10 及以上(含现在的 24/25/27 系):仍然用 compose v2,这是官方默认路径。

实操上更省心的做法不是死记对应表,而是别手动挑版本:让包管理器或官方仓库把两者一起拉进来,它们会自动匹配到互相兼容的版本。

四、怎么查自己机器上现在是什么版本

docker version
docker compose version

第一条输出里 Server 那一段是 docker 引擎版本,第二条直接给 compose 的版本号。两个数摆在一起,就能判断当前组合在不在推荐区间里。

五、怎么把 compose 升到 v2

如果机器上是 v1、想换 v2:

  • Ubuntu/Debian:官方源里的 docker-compose-plugin 装完就是 v2,装上后老命令会被兼容层接管,脚本里原来写的 docker-compose up 大部分情况还能继续用。
  • 其他系统:到官方仓库按文档把 compose 插件组件装进来,别再从 PIP 装那个 Python 版了,已经不推荐。

升级完做一次回归:把原来用 compose 起的项目 down 掉再 up -d,看网络名、卷名有没有变化——v1 和 v2 生成的默认项目名规则略有不同,跨代迁移时容器名可能变,依赖容器名的脚本要跟着改。

六、一个容易踩的坑

很多人遇到"compose 起不来,报 unknown flag 或者 yaml 里某个字段不识别",八成是拿老版本的 compose 去读新版本才支持的字段(比如 init、scale 这类)。这时候先 docker compose version 看一眼版本,再决定是改配置还是升工具,别一上来就去改 yaml。

七、小结

记三个结论就够用:docker 管单容器、compose 编排多容器;v1 是 Python 老实现、引擎 1.10 起用,已停止维护;v2 是 Go 重写、引擎 18.06 起用,现在官方推荐。日常别纠结版本对应表,跟着包管理器把 docker 和 compose 插件一起装、用 docker compose version 核对,遇到字段不识别先怀疑版本再改配置,能省掉大半的折腾。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表