Docker Compose V1 是 python 写的,目前不会太维护了。建议使用 golang 编写的全新 Docker Compose V2
如果你用 Arch Linux,最近的更新可能会直接让旧的 Docker Compose V1 缺少某个依赖而爆炸,需要安装 AUR 中的一个包才能解决。所以我们一起来 🥲被迫 升级到 Docker Compose V2 吧
安装 Docker Compose V2
Arch Linux 等发行版可直接通过包管理器安装 docker 和 docker-compose
docker compose 项目 release 页面(目前主线是V2):
单用户
- 在项目 release 页面下载 Docker Compose V2 二进制程序,放入
$HOME/.docker/cli-plugins
, 并命名为docker-compose
paxos in ~ at server.morfans.cn
➜ mkdir -p ~/.docker/cli-plugins/
paxos in ~ at server.morfans.cn
➜ curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
PS: curl 一定要加参数 -L
- 设定可执行权限
paxos in ~ at server.morfans.cn
➜ chmod +x ~/.docker/cli-plugins/docker-compose
多用户(系统)
和单用户安装方式相同
将下载的二进制程序放入如下位置并设定可执行权限
/usr/local/lib/docker/cli-plugins
paxos in ~ at server.morfans.cn
➜ sudo mkdir -p /usr/local/lib/docker/cli-plugins
# 下载插件
paxos in ~ at server.morfans.cn
➜ sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
# 设置权限
paxos in ~ at server.morfans.cn
➜ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
使用 Docker Compose V2
Compose V2 是直接作为插件的形式放到了 Docker Client 中,这意味之前的 docker-compose
命令将会变成 docker 程序下的一个参数
可以使用 `docker info` 查看
paxos in ~ at server.morfans.cn
➜ docker info
---
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
compose: Docker Compose (Docker Inc., v2.2.3)
scan: Docker Scan (Docker Inc., v0.8.0)
paxos in ~ at server.morfans.cn
➜ docker compose version
Docker Compose version v2.2.3
如果你不习惯的话,继续往下看文章,下面将为你介绍一种兼容旧的使用习惯的方案:Compose Switch
Compose Switch
官方链接: docker/compose-switch
Compose Switch 是一个工具,用来替代之前 Docker Compose V1 的 python 可执行文件 docker-compose
,它能自动翻译命令到 docker compose
(Docker Compose V2)。
😜 说人话就是使用这个工具可以用 docker-compose 命令来使用 Docker Compose V2
一键懒人安装
paxos in ~ at server.morfans.cn
➜ curl -fL https://raw.githubusercontent.com/docker/compose-switch/master/install_on_linux.sh | sh
手动安装
需要有管理员权限
- 重命名之前的 Docker Compose V1
如果你忘记之前你咋装的 Docker Compose V1 了,可以这样找 Docker Compose V1
paxos in ~ at server.morfans.cn
➜ command -v docker-compose
/usr/local/bin/docker-compose
paxos in ~ at server.morfans.cn
➜ which docker-compose
/usr/local/bin/docker-compose
如果没有Docker Compose V1 想装 Docker Compose V1 也可以装一个,参考官方文档:
找到旧的 Docker Compose V1 后进行重命名操作,因为稍后会用到这个名称和路径
如果没安装 Docker Compose V1 怎么办?
换个角度想想,没安装大概率是你用不到,直接用 Docker Compose V2,下面的命令有关 Docker Compose V1 的操作省去即可。比如重命名,使用alternatives
时候也无需添加 docker-compose(直接 ln -s 创建软链接或重命名都可)
把旧的 Docker Compose V1 重命名:
paxos in ~ at server.morfans.cn
➜ mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-v1
- 下载 compose-switch 并放入 Path 里有的 bin 目录
paxos in ~ at server.morfans.cn
➜ curl -fL https://github.com/docker/compose-switch/releases/latest/download/docker-compose-linux-amd64 -o /usr/local/bin/compose-switch
# 加可执行权限
paxos in ~ at server.morfans.cn
➜ chmod +x /usr/local/bin/compose-switch
- 为了方便日后能方便切换 Docker Compose V1,制作可替换的 alias
- rhel 系的系统用
alternatives
- debian 系的用
update-alternatives
系统有哪个命令就用哪个,替换下面的命令就行了。如果没有就简单粗暴用软连接 👀
优先级大的默认
paxos in ~ at server.morfans.cn
➜ sudo update-alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/docker-compose-v1 1
paxos in ~ at server.morfans.cn
➜ sudo alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/compose-switch 99
使用
配置后,当你执行docker-compose
命令就自动调用 Compose Switch 将命令转为 docker compose xxx
(使用 Docker Compose V2)
paxos in ~ at server.morfans.cn
➜ docker-compose version
Docker Compose version v2.2.3
日后需要切换到 Docker Compose V1 只需要使用如下命令就能方便切换了:
paxos in ~ at server.morfans.cn
➜ update-alternatives --config docker-compose
选择 Docker Compose V1 后:
paxos in ~ at server.morfans.cn
➜ docker-compose version
docker-compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
发表回复