Docker已安装,但Docker Compose不是?为什么?

mah*_*n3d 102 docker dockerfile docker-compose

我通过运行以下命令在centos 7上安装了docker.

curl -sSL https://get.docker.com/ | sh
systemctl enable docker && systemctl start docker
docker run hello-world
Run Code Online (Sandbox Code Playgroud)

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

但是,当我试图运行docker-compose(docker-compose.yml存在且有效)时,它只给我Centos上的错误(Windows版本适用于docker-compose文件)

/usr/local/bin/docker-compose: line 1: {error:Not Found}: command not found
Run Code Online (Sandbox Code Playgroud)

Dan*_*iuk 208

您还需要安装Docker Compose.请参阅手册.以下是您需要执行的命令

sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/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
Run Code Online (Sandbox Code Playgroud)

  • @kuanb如果说不允许许可,请确保你获得完整的sudo权利 (4认同)
  • 当运行第二行时,我收到一个响应:`mv:rename ./docker-compose to/usr/bin/docker-compose:不允许操作 (3认同)
  • 确保指向 GitHub 版本的链接没有过时!查看 [GitHub 上的最新版本](https://github.com/docker/compose/releases)。您也可以从浏览器下载最新的文件,然后只需移动并为其授予可执行权限即可。 (3认同)
  • 我仍在学习 docker,但据我了解 docker-compose 不应该用于新安装,因为它的所有功能都已通过“docker stack”和 docker swarm 集成到主 docker-cli 中。https://vsupalov.com/difference-docker-compose-and-docker-stack/ 。也许这个答案应该提到这一点,因为它在寻找 docker-compose 时首先出现在谷歌上 (3认同)
  • 我只是继续运行“sudo apt install docker-compose”,没有做任何其他事情。 (3认同)

小智 35

我正在Raspberry Pi 3上安装Raspbian 8. curl方法对我来说失败了(line 1: Not: command not found请求时出错docker-compose --version)并且@ sunapi386的解决方案似乎有点过时了,所以我尝试了这个有效:

首先清理以前的努力:

sudo rm /usr/local/bin/docker-compose
sudo pip uninstall docker-compose
Run Code Online (Sandbox Code Playgroud)

然后按照此指南重新使用Rpi上的docker-compose:

sudo apt-get -y install python-pip
sudo pip install docker-compose
Run Code Online (Sandbox Code Playgroud)

对我而言(2017年11月1日),这会产生以下回应docker-compose --version:

docker-compose version 1.16.1, build 6d1ac219
Run Code Online (Sandbox Code Playgroud)

  • 您的解决方案完美无缺 如果你不需要最新版本的docker-compose,你也可以使用`apt-get install docker-compose`.当然,这需要您将docker存储库添加到apt的sources.list中(get.docker.com的安装脚本会自动为您执行此操作).然而,在我的Raspberry Pi 3上使用Raspian Stretch Lite,这导致了一个非常古老的版本:`docker-compose version 1.8.0,build unknown`.这个版本太旧了,它只支持docker-compose文件格式的第2版. (5认同)

Ami*_*min 30

如果您使用的是 ubuntu 并且docker compose可以运行但docker-compose不能运行,并且您需要使用旧docker-compose语法(也许第 3 方库使用它),您可以按照以下步骤修复它:

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

创建一个符号链接到它:

sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

现在docker-compose应该可以使用了

更新:

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

cd ~/Downloads
sudo mv ./docker-compose-* /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

  • 是的,我已经新安装了。用这个。sudo apt-get 安装 docker-compose (2认同)

Yai*_*lka 25

2022 年 5 月更新

自 2022 年 4 月起,docker compose V2 正式发布,现已成为 docker 桌面的一部分。您可以在这里查看所有相关信息。Compose V1 现已标记为已弃用。

原答案:

docker compose v1 是单独安装的。要安装 v1,请按照此处的说明进行操作。

docker compose v2 目前是一个单独的安装,但在准备好后会在某个时候集成到 docker 中。它被设想为一个 docker 插件。此时,如果您想要 docker compose v2,自此提交以来您可以执行以下操作:

sudo apt update \
&& sudo apt install docker-compose-plugin
Run Code Online (Sandbox Code Playgroud)

使用 apt 或 yum 的等效项。这将安装新的 docker compose V2 作为插件。


Gay*_*tti 17

如果您通过将 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"
Run Code Online (Sandbox Code Playgroud)

做就是了:

$ sudo apt-get install docker-compose
Run Code Online (Sandbox Code Playgroud)

如果在基于 RHEL 的发行版 / Fedora 上:

$ sudo dnf install docker-compose
Run Code Online (Sandbox Code Playgroud)

  • apt get - 即使添加了他们为 docker CE 指定的存储库后,似乎也只包含 `docker-compose` 1.8,它与版本 2 的最大 `docker-compose.yml` 文件兼容。换句话说,它们' re 不再将 docker-compose 发布到 apt-get 默认存储库或他们自己的 apt-get 存储库。为了获得更新的版本,您似乎需要使用“pip”。这让我很恼火,因为这实际上是我使用 pip 的唯一目的。 (4认同)

tan*_*man 17

他们改变了语法。现在写成这样:

docker compose [OPTIONS] COMMAND
docker compose ps
Run Code Online (Sandbox Code Playgroud)

现在 compose 是插件!但其他文档页面具有旧语法。
我应该如何支持兼容性?!

更新:
如果您运行脚本,它可以获得撰写命令:

docker compose [OPTIONS] COMMAND
docker compose ps
Run Code Online (Sandbox Code Playgroud)

拄着拐杖生活,感谢 Docker 命令(:


her*_*rin 11

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

apt-get install docker-compose
Run Code Online (Sandbox Code Playgroud)

它完成了工作(未在 centos 上测试)


小智 8

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

$ docker-compose -v
Run Code Online (Sandbox Code Playgroud)

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

$ chmod +x /usr/local/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

检查这是否有效。


sun*_*386 7

我正在Raspbian OS上的Raspberry Pi 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为我工作.

curl


frm*_*elz 6

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

docker-compose -v
/usr/local/bin/docker-compose: line 1: Not: command not found
Run Code Online (Sandbox Code Playgroud)

有趣的是,docker-compose文件的第一行实际上只包含“Not Found”(它应该是一个二进制文件)

cat /usr/local/bin/docker-compose
Not Found
Run Code Online (Sandbox Code Playgroud)

这意味着我尝试卷曲的 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
Run Code Online (Sandbox Code Playgroud)

运行uname -suname -m在本地您可以看到需要添加到下载网址中的内容

uname -s
Linux
uname -m
x86_64
Run Code Online (Sandbox Code Playgroud)

在浏览器中尝试该 url https://github.com/docker/compose/releases/download/2.2.2/docker-compose-linux-x86_64 显示未找到该页面。

他们在版本中添加了“v”的问题,如v2.2.2. 所以下载网址应该带有“ vhttps://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64。他们的版本: https: //github.com/docker/compose/releases/

这有效(注意v 2.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
Run Code Online (Sandbox Code Playgroud)