为什么安装了Docker而没有安装Docker Compose?

我已经在CentOS 7上安装了docker,运行如下命令:

curl -sSL https://get.docker.com/ | sh
systemctl enable docker && systemctl start docker
docker run hello-world

注意:helloworld运行正常,没有问题。

然而,当我尝试运行docker-compose (docker-compose。yml存在并且有效)它只在CentOS上给了我错误(Windows版本的docker-compose文件工作良好)

/usr/local/bin/docker-compose: line 1: {error:Not Found}: command not found
409929 次浏览

安装docker并不意味着你已经安装了docker-compose。它有一个先决条件,那就是你已经安装了docker引擎。在此之后,你可以根据Centos 7的链接安装docker-compose。

首先请检查docker-compose是否安装,

$ docker-compose -v

如果没有安装,请参考安装指南https://docs.docker.com/compose/install/ 如果已安装,则给予二进制文件可执行权限

$ chmod +x /usr/local/bin/docker-compose

检查一下是否有效。

您还需要安装Docker Compose。参见手册。下面是您需要执行的命令

sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)"  -o /usr/local/bin/docker-compose
sudo mv /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
< p > <强>注意: 确保指向GitHub版本的链接没有过时!在GitHub上查看最新版本。< /强> < / p >

docker-compose目前是一个利用docker(-engine)的工具,但没有包含在docker的发行版中。

以下是安装手册链接: https://docs.docker.com/compose/install/ < / p >

TL;博士:

curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/bin/docker-compose

(1.8.0将在未来更改)

我正在安装树莓派3,在树莓操作系统上。curl方法没有解析为有效的响应。它还说{error: Not Found},我看了一下URL https://github.com/docker/compose/releases/download/1.11.2/docker-compose-Linux-armv7l,它是无效的。我猜那里没有建筑。

这个指南https://github.com/hypriot/arm-compose对我有用。

sudo apt-get update
sudo apt-get install -y apt-transport-https
echo "deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main" | sudo tee /etc/apt/sources.list.d/hypriot.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 37BBEE3F7AD95B3F
sudo apt-get update
sudo apt-get install docker-compose

我正在安装树莓派3和树莓8。curl方法失败了(在要求docker-compose --version时得到line 1: Not: command not found错误),@sunapi386的解决方案似乎有点过时,所以我尝试了这个工作:

首先清理之前的工作:

sudo rm /usr/local/bin/docker-compose
sudo pip uninstall docker-compose

然后执行本指南是关于Rpi的docker-compose:

sudo apt-get -y install python-pip
sudo pip install docker-compose

对我来说(2017年11月1日),这导致对docker-compose --version的响应如下:

docker-compose version 1.16.1, build 6d1ac219

如果你通过将docker的官方存储库添加到存储库列表来安装docker,如下所示:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

只做:

$ sudo apt-get install docker-compose

对于基于RHEL的发行版/ Fedora:

$ sudo dnf install docker-compose

我建议在Mac上使用官方pkg。我猜docker-compose默认情况下不再包含在docker中:https://docs.docker.com/toolbox/toolbox_install_mac/

参考上面给出的答案(我没有足够的声誉单独提到单独的解决方案,因此我在这里集体做这些),我想补充一些重要的建议:

  1. Docker-compose你可以从存储库安装(如果你在存储库中有这个包,如果没有,你可以用这个包添加到系统中一个存储库)或在项目的官方网站上使用curl - totoural下载二进制文件- src: https://docs.docker.com/compose/install /

  2. Docker-compose来自存储库的版本是1.8.0(至少我是这样)。这个docker-compose版本不支持版本3中的配置文件。它只支持version = <2。在官方网站的项目是一个建议使用容器配置版本3 - src: https://docs.docker.com/compose/compose-file /合成-版本/。根据我自己在docker中工作的经验,我建议在版本3中使用容器配置-比版本<3中有更多的配置选项可以使用。如果你想使用版本3中的配置,你必须更新/安装docker-compose到至少1.17的版本——最好是最新的稳定版本。该项目的官方网站是教程如何做到这一过程- src: https://docs.docker.com/compose/install/

  3. 当你试图手动删除旧的docker-compose二进制文件时,你可以在默认路径/usr/local/bin/docker-compose中有关于缺失文件的信息。在我的例子中,docker-compose位于默认路径/usr/bin/docker-compose。在这种情况下,我建议您使用系统中的find工具来查找二进制文件docker-compose - example语法:sudo find / -name 'docker-compose'。它帮助了我。多亏了这一点,我删除了旧的docker-compose版本,并将稳定版本添加到系统中——我使用curl工具下载二进制文件docker-compose,将其放在正确的路径中,并给予它正确的权限——所有这些过程都在上面的帖子中描述过。

< p >问候, 亚当< / p >

以上的解决方案对我不起作用。但我发现这个很管用:

sudo apt-get update -y && sudo apt-get install -y python3-pip python3-dev
sudo apt-get remove docker docker-engine docker.io
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo pip3 install docker-compose
#sudo docker-compose -f docker-compose-profess.yml pull ofw
sudo usermod -a -G docker $USER
sudo reboot

我在debian上,我发现了一些很自然的事情:

apt-get install docker-compose

,它完成了任务 (未在centos上测试)

在Linux上,您可以从GitHub上的Compose存储库发布页面下载Docker Compose二进制文件。按照链接中的说明操作,其中包括在终端上运行curl命令来下载二进制文件。这些分步指导也包括在下面。

1:执行此命令下载Docker Compose当前稳定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

若要安装不同版本的Compose,请将1.26.2替换为您想使用的Compose版本。

2:应用可执行权限的二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

备注:如果安装后docker-compose命令执行失败,请检查 你的路。您还可以创建到/usr/bin或任何的符号链接

只需使用brew:

brew install docker-compose

如果docker-compose is已经存在于/usr/local/bin中:

ls -alt /usr/local/bin/ | grep docker-compose
> lrwxr-xr-x    1 root     wheel        77 Mar 11 10:39 docker-compose -> /Applications/Docker.app/Contents/Resources/bin/docker-compose/docker-compose

然后在最后用/usr/local/bin更新你的.bash_profile路径:

export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH:/usr/local/bin"

运行:

source ~/.bash_profile

并检查:

echo $PATH
> ...
which docker-compose
> /usr/local/bin/docker-compose
docker-compose

如果你想自动安装docker-compose最新版本,只需运行:

export docker_compose_latest=$(curl -Ls -o /dev/null -w %{url_effective}  https://github.com/docker/compose/releases/latest  | grep -o '[^/]*$')
curl -L "https://github.com/docker/compose/releases/download/${docker_compose_latest}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

它将安装最新版本的docker-compose。正式安装方式需要版本获得你的手。但是我写了一个脚本,可以自动获取最新版本。

尝试使用curl在CentOS上安装docker-compose(适用于Linux)。在这些步骤之后,它返回一个错误

docker-compose -v
/usr/local/bin/docker-compose: line 1: Not: command not found

有趣的事情docker-compose文件字面上只包含“;找不到”;第1行(应该是二进制)

cat /usr/local/bin/docker-compose
Not Found

这意味着我试图从github链接卷曲不存在。我失败的链接是:

sudo curl -L "https://github.com/docker/compose/releases/download/2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

在本地运行uname -suname -m,你可以看到需要添加到下载url的内容

uname -s
Linux
uname -m
x86_64

在浏览器中尝试url https://github.com/docker/compose/releases/download/2.2.2/docker-compose-linux-x86_64

.

.

一个问题,他们增加了"v"到一个版本,如v2.2.2。所以下载url应该是“__abc1”; https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64。它们的发布:https://github.com/docker/compose/releases/

这是有效的(注意v2.2.2)

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v
Docker Compose version v2.2.2

2022年5月更新

自2022年4月以来,docker compose V2是GA,现在是docker桌面的一部分。你可以看到所有相关的信息在这里。 Compose V1现在被标记为已弃用

最初的回答:

Docker compose v1是一个单独的安装。要安装v1,请参考在这里

docker compose v2目前是一个单独的安装,但当它准备好了的时候,它会被集成到docker中吗。它被认为是一个docker插件。在这个时候,如果你想要docker编写v2,由于提交,你可以这样做:

sudo apt update && apt install docker-compose-plugin

用apt或相当于yum的词。这将以插件的形式安装新的docker compose V2。

他们改变了语法。现在它是这样写的:

docker compose [OPTIONS] COMMAND
docker compose ps

现在撰写插件!但是其他的文档页有旧的语法 我该如何支持兼容性?!< / p > < p >更新:
如果你运行脚本,它可以得到compose命令:

# docker-compose.sh
if docker compose version > /dev/null ; then
echo "docker compose"
else
echo "docker-compose"
fi


# other.sh
DOCKER_C=$($BASEDIR/docker-compose.sh)
echo "docker command is: $DOCKER_C"

生活在拐杖上,感谢Docker命令(:

安装Docker Compose v1,可以按照如下方式安装:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

要安装Docker Compose v2,可以参考在这里

对于新的compose和旧的docker-compose之间的命令兼容性,可以参考在这里

如果你使用的是ubuntu,并且docker compose可以工作,但docker-compose不行,并且你需要旧的docker-compose语法可用(可能是第三方库使用它),你可以通过以下步骤修复它:

docker-compose插件可能安装在/usr/libexec/docker/cli-plugins/docker-compose下(确保它是)

创建一个符号链接到它:

sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose

现在docker-compose应该可用了

更新:

如果在上述路径中找不到docker-compose,您可以手动从操作系统的发布页面中下载它,然后移动下载的文件并使其可执行。

sudo mv ./docker-compose-* /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

官方文档:

如果您在Windows或Mac上安装了Docker Desktop/Toolbox,则您需要使用 已经有Docker Compose!Play-with-Docker实例已经有了 Docker Compose也安装了。如果您在Linux机器上是,那么您 将需要安装Docker.

为此,你需要引用预先存在的Docker安装部分。

对于Ubuntu操作系统有很多建议,但我认为最简单的解决方案是创建一个别名。(如果docker compose已经安装)

步骤:

  • 你的~目录中的ls -la,看看是否有一个.bash_aliases
  • 如果不是,直接创建它(touchnano…或者简单地用gedit) gedit .bash_aliases
  • (以上步骤可以跳过,只需在.bashrc中添加你的别名)
  • 添加别名alias docker-compose="docker compose"
  • 使别名在当前会话中可用:source ~/.bashrc