惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

魔帆博客

Python包管理的血泪史:从混乱到秩序的漫长征 | 魔帆博客 Mac mini + iPad 随航梦幻联动!零显示器配置指南,iPad 秒变 Mac 主屏幕 | 魔帆博客 日文中的衬线、非衬线混排 | 魔帆博客 使用 GNU/Linux 搭建多出口软路由 | 魔帆博客 网页排版中的字体衬线 | 魔帆博客 配置和使用 Windows Dev Drive 开发驱动器 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客 Windows 注册表编辑或清除多显示器配置 | 魔帆博客 Git 合并本地两个不同的 Repo 仓库 | 魔帆博客 【记录】使用Golang开发腾讯云函数踩的坑 | 魔帆博客 Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 【笔记】Hydro二次开发总结 前端篇(一) | 魔帆博客 C/C++ 二叉树 | 魔帆博客 Linux 报错Certificate verification failed: The certificate is NOT trusted. | 魔帆博客 Python 数字大小写转换 | 魔帆博客 安装有 RootMagiskXposedPlay 的 WSA 安卓子系统 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 Windows10 系统盘开启 Bitlocker | 魔帆博客
教程:如何更新安装 docker-compose V2 和使用 docker switch...
野小新 · 2022-02-25 · via 魔帆博客

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