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

推荐订阅源

Project Zero
Project Zero
Security Latest
Security Latest
G
GRAHAM CLULEY
C
CXSECURITY Database RSS Feed - CXSecurity.com
云风的 BLOG
云风的 BLOG
月光博客
月光博客
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
Attack and Defense Labs
Attack and Defense Labs
罗磊的独立博客
D
DataBreaches.Net
TaoSecurity Blog
TaoSecurity Blog
T
Threatpost
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
Cisco Talos Blog
Cisco Talos Blog
Google Online Security Blog
Google Online Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
NISL@THU
NISL@THU
Spread Privacy
Spread Privacy
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
PCI Perspectives
PCI Perspectives
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
V
V2EX
WordPress大学
WordPress大学
Recorded Future
Recorded Future
Stack Overflow Blog
Stack Overflow Blog
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
D
Docker
Latest news
Latest news
C
CERT Recently Published Vulnerability Notes
D
Darknet – Hacking Tools, Hacker News & Cyber Security
B
Blog RSS Feed
V2EX - 技术
V2EX - 技术
小众软件
小众软件
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

野小新 – 魔帆博客

Python包管理的血泪史:从混乱到秩序的漫长征 | 魔帆博客 Mac mini + iPad 随航梦幻联动!零显示器配置指南,iPad 秒变 Mac 主屏幕 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客 Git 合并本地两个不同的 Repo 仓库 | 魔帆博客 Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 安装有 RootMagiskXposedPlay 的 WSA 安卓子系统 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 2022 年 Android 下的安卓浏览器使用指北-Firefox向 | 魔帆博客 Docker WSL1/2 迁移 Linux 发行版目录 | 魔帆博客 Spotify 主题 spicetify-fluent - 微软 win11 风格美化 | 魔帆博客 WSA 安卓子系统 adb 提示 cannot connect the target machine actively refused it 10061 | 魔帆博客 双重验证 Authy 导出所有 TOTP token 和 golang 配置 GOPROXY 解决网络问题 | 魔帆博客 powershll 像 bash 一样为单个命令设置临时环境变量 | 魔帆博客 Linux 教程:Linux 初学者必了解的概念 | 魔帆博客 安卓电池充电保护-智能充电/温控切断(Root方案) | 魔帆博客 备用机养成方案 - Tasker 安卓短信转发到 telegram | 魔帆博客 创建支持安全启动(Secure Boot)的 Arch Linux ISO 安装镜像 | 魔帆博客 MiBand小米手环2/3刷机刷固件刷表盘刷字体指南(iPhone iOS 也支持) | 魔帆博客
教程:如何更新安装 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