我注意到 docker-compose 1.x 正在逐渐被放弃,以支持新的 v2:
https://www.docker.com/blog/announcing-compose-v2-general-availability/
因此,我删除了我的docker-compose
v1.x 命令(我认为这是可行的方法,但我找不到旧的文档关于如何安装/卸载docker-compose):
$ sudo rm -rf /usr/local/bin/docker-compose
然后我按照文档:
$ sudo apt-get install docker-compose-plugin
瞧瞧:
$ docker compose version
Docker Compose version v2.5.0
但我以前调用docker-compose
(带破折号)的所有脚本都不再起作用。显然。
因此我的问题是:我怎样才能将新的撰写命令别名为docker-compose
?
将此行添加到文件是否足够.bashrc
?
$ echo "alias docker-compose='docker compose'" >> ~/.bashrc
$ source ~/.bashrc
答案1
最简单的解决方案是创建一个别名,就像您在问题中所述的那样:
alias docker-compose='docker compose'
这会正常运行。
此外,我建议使用apt
包安装 Docker Compose docker-compose-plugin
,而不是通过手动安装curl
,除非您有非常好的理由这样做。
通过安装apt
(这是 Ubuntu 上的推荐方式),您可以确保可以使用新的 Docker 版本apt upgrade
甚至无人值守升级自动更新 Docker Compose。
答案2
在大多数情况下,添加别名.bashrc
都会起作用,但对于某些脚本可能不起作用。
docker-compose
我认为创建一个名为“您”的小脚本PATH
并只传递参数是docker compose
解决问题的更好方法。
答案3
对我来说不是 100% 清楚,但有两种方法可以在文档:
前者,
apt install docker-compose-plugin
第二种方法(用户可选择第一种方法或第二种方法,但不能同时使用)是使用 手动下载二进制文件,
curl
但我认为它遗漏了一些细节,尤其是新创建的文件夹不在默认的 中path
。下面是我如何进行全局安装(即/usr/local/...
):
$ sudo apt-get remove --purge docker-compose-plugin
$ sudo su
# DOCKER_CONFIG_CLI="/usr/local/lib/docker/cli-plugins"
# mkdir -p $DOCKER_CONFIG_CLI
# curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG_CLI/docker-compose
# chmod +x $DOCKER_CONFIG_CLI/docker-compose
# cd /usr/local/bin
# mv docker-compose docker-compose_v1 # only if you had a previous docker-compose version!
# ln -s /usr/local/lib/docker/cli-plugins/docker-compose
# exit
$ which docker-compose
/usr/local/bin/docker-compose
或者一次性:
#!/bin/bash
apt-get update \
&& apt-get remove --purge docker-compose-plugin \
&& DOCKER_CONFIG_CLI="/usr/local/lib/docker/cli-plugins" \
&& mkdir -p $DOCKER_CONFIG_CLI \
&& curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG_CLI/docker-compose \
&& chmod +x $DOCKER_CONFIG_CLI/docker-compose \
&& cd /usr/local/bin \
&& mv docker-compose docker-compose_v1 \
&& ln -s /usr/local/lib/docker/cli-plugins/docker-compose \
&& which docker-compose
然后你就得到了两种调用方式,过渡更加平滑:
$ docker compose version
Docker Compose version v2.5.0
$ docker-compose --version
# or: docker-compose version
Docker Compose version v2.5.0