MorFans Dev
折腾 - 开发 - 分享

教程:如何更新安装 docker-compose V2 和使用 docker switch

教程:如何更新安装 docker-compose V2 和使用 docker switch

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):

单用户

  1. 在项目 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

  1. 设定可执行权限
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

手动安装

需要有管理员权限

  1. 重命名之前的 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
  1. 下载 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
  1. 为了方便日后能方便切换 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
赞赏
魔帆博客,版权所有 | 如未注明,均为原创
本站均采用 BY-NC-ND 协议 (署名-非商业性使用-禁止演绎) 进行授权。
转载请注明来自本站文章:教程:如何更新安装 docker-compose V2 和使用 docker switch(https://www.morfans.cn/archives/3270)

野小新

文章作者

野小新很野~

发表回复

textsms
account_circle
email

  • 星星

    收藏从未停止,行动从未开始(大雾

    2年前 回复

教程:如何更新安装 docker-compose V2 和使用 docker switch
Docker Compose V1 是 python 写的,目前不会太维护了。建议使用 golang 编写的全新 Docker Compose V2 如果你用 Arch Linux,最近的更新可能会直接让旧的 Docker Compose V1 缺少某个…
扫描二维码继续阅读
2022-02-25