docker-compose的v2发布了

背景

两天前docker发布了compose的v2版本,
主管变化是命令从 docker-compose 变为了 docker compose.
效果上看起来启动更快了.还有了耗时提示.界面显得更CUI化.
本着用新不用旧的原则.开始使用v2的版本.

安装文件变化

原先以命令形式安装在 /usr/local/bin/docker-compose (举例,不同系统有不同)
升级后以插件形式,安装在 /usr/local/lib/docker/cli-plugins/docker-compose (举例,不同系统有不同)
而且还要给插件以运行权限.

官方安装方式

手动方式

1
2
3
4
5
6
7
# 下载插件
curl -SL https://github.com/docker/compose/releases/download/v2.0.0/docker-compose-linux-amd64 -o /usr/local/lib/docker/cli-plugins/docker-compose
# 执行权限
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
# 测试效果
docker compose version
# Docker Compose version 2.0.0等

官方的兼容思路

  1. 旧版的 docker-compose 要挪位置,重命名为 docker-compose-v1
  2. docker-compose 作为反向代理
  3. 借助 alternatives 机制
    1. 优先映射到 compose-switch, 拥有翻译功能,让v1版本的命令翻译为v2版本的命令
    2. 其次可以映射到 docker-compose-v1

官方的自动方式有点不靠谱,手动方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下载
curl -fL https://github.com/docker/compose-switch/releases/download/v1.0.1/docker-compose-linux-amd64 -o /usr/local/bin/compose-switch
# 权限
chmod +x /usr/local/bin/compose-switch

# 让位
mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-v1

# 代理
update-alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/docker-compose-v1 1
update-alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/compose-switch 99

# 查看效果
update-alternatives --display docker-compose

轻度使用的兼容思路

官方的兼容方式有点奇怪,宣称将v1命令翻译为v2的命令,
但使用 docker-compose version 依然得到的是v1的结果.

由于平常仅仅轻度使用 docker-compose up -d, docker-compose down 之类的命令.没有历史包袱.
因此直接以配置alias的方式解决 alias docker-compose='docker compose'

瑕疵表现为 docker-compose --version 相当与使用了 docker compose --version,
而后者不是一条合法的命令.

参考

  1. 官方对v2的简单介绍,安装,兼容等内容