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

Why is Docker installed but not Docker Compose?

我已经通过 运行ning 以下命令在 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

安装 docker 并不意味着您已经安装了 docker-compose。它有先决条件,你已经安装了你已经完成的 docker 引擎。之后你就可以安装 docker-compose following this link for Centos 7.

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

$ docker-compose -v

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

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

检查这是否有效。

您还需要安装 Docker Compose。参见manual。以下是您需要执行的命令

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.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

docker-compose 目前是一个利用 docker(-engine) 的工具,但未包含在 docker.

的分发版中

安装手册link如下: https://docs.docker.com/compose/install/

长话短说:

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以后会改)

我正在 Raspberry Pi 3、Raspbian OS 上安装。 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

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

首先清理之前的工作:

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

然后关注this guidance re docker-compose on Rpi:

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,例如:

$ 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-totourial-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 / compose-versioning /. From my own experience with work in the docker I recommend using container configurations in version 3 - there are more configuration options to use than in versions <3. If you want to use the configurations configurations in version 3 you have to do update / install docker-compose to the version of at least 1.17 - preferably the latest stable. The official site of the project is toturial how to do this process - src: https://docs.docker.com/compose/install/

  3. 当您尝试手动删除旧的 docker-compose 二进制文件时,您可以在默认路径 /usr/local/bin/docker-compose 中获得有关丢失文件的信息。在我的例子中,docker-compose 在默认路径 /usr/bin/docker-compose 中。在这种情况下,我建议您使用系统中的查找工具来查找二进制文件 docker-compose - 示例语法:sudo find / -name 'docker-compose'。它帮助了我。由于这个原因,我删除了旧的 docker-compose 版本并将稳定版添加到系统中 - 我使用 curl 工具下载二进制文件 docker-compose,将其放在正确的路径中并提供正确的权限 - 所有这些过程都已在上面的帖子中进行了描述。

此致, 亚当

以上解决方案对我不起作用。但我发现这个有效:

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 二进制文件。按照 link 中的说明进行操作,其中涉及 运行 终端中的 curl 命令以下载二进制文件。这些 step-by-step 说明也包含在下面。

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

Note: If the command docker-compose fails after installation, check your path. You can also create a symbolic link to /usr/bin or any other directory in your path.

只需使用 brew:

brew install docker-compose

如果 docker-compose 已经存在于 /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

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

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。 Official installing way需要您亲手获得的版本。但是我写了一个脚本,自动为你获取最新版本。

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

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 link 我试图从 curl 不存在。我不成功的 link 是:

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 应该是“vhttps://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 正式发布,现在是 docker 桌面的一部分。您可以看到所有相关信息 here。 Compose V1 现已标记为已弃用。

原回答:

docker compose v1 是单独安装的。要安装 v1,请按照说明 here.

docker compose v2 目前是一个单独的安装,但 will be integrated into docker at some point, when it's ready. It has been conceived as a docker plugin. At this time, if you want docker compose v2, since this 提交你可以做:

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

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

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

docker compose [OPTIONS] COMMAND
docker compose ps

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

安装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,可以参考here

新旧compose命令兼容性docker-compose,可参考here.