为啥安装了 Docker 而不是 Docker Compose?

Posted

技术标签:

【中文标题】为啥安装了 Docker 而不是 Docker Compose?【英文标题】:Why is Docker installed but not Docker Compose?为什么安装了 Docker 而不是 Docker Compose? 【发布时间】:2016-08-09 17:15:06 【问题描述】:

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

【问题讨论】:

有趣的是,对于 Windows 和 Mac,一切都已加载并可用,而 Linux 用户必须经历分别输入和安装东西并弄清楚东西的苦差事(这当然很有趣) 如果user 是一名开发人员,他们可能不会因为输入一些命令而烦恼,因为他们通常会在正常的一天中输入数百个这样的内容。 这个命令在 ubuntu/arm64 上对我有用 - sudo pip3 -v install docker-compose @mahen3d 我正在回复我上面的评论,而不是问题。 【参考方案1】:

您还需要安装 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

【讨论】:

运行第二行时我收到回复:mv: rename ./docker-compose to /usr/bin/docker-compose: Operation not permitted @kuanb 如果它说权限不允许,请确保你有完整的 sudo 权限 目前版本 1.7.0 是旧版本。根据docs.docker.com/compose/install 新版本是1.11.2。这意味着应该使用 curl -L github.com/docker/compose/releases/download/1.11.2/…uname -s-uname -m > ./docker-compose 而不是 curl -L github.com/docker/compose/releases/download/1.7.0/…uname -s-uname -m > ./docker-compose 确保指向 GitHub 版本的链接没有过期!查看latest releases on GitHub。您也可以从浏览器下载最新文件,然后移动并为其授予可执行权限。 我仍在学习 docker,但据我所知,docker-compose 不应该用于新安装,因为它的所有功能都已通过 docker stack 和 docker 集成到主 docker-cli一群。 vsupalov.com/difference-docker-compose-and-docker-stack 。也许这个答案应该提到这一点,因为它在寻找 docker-compose 时首先出现在谷歌上【参考方案2】:

我正在使用 Raspbian 8 在 Raspberry Pi 3 上安装。 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-compose,也可以使用apt-get install docker-compose。当然,这需要您将 docker 存储库添加到 apt 的 sources.list 中(get.docker.com 中的安装脚本会自动为您执行此操作)。然而,在我的带有 Raspian Stretch Lite 的 Raspberry Pi 3 上,这导致了一个非常旧的版本:docker-compose version 1.8.0, build unknown。这个版本太老了,只支持 docker-compose 文件格式的第 2 版。 太棒了,这帮助我在 aws 上遇到了 docker-comps 错误。谢谢 我遇到了一些麻烦,并为 docker-compose 使用了 'apt purge' 和 'pip uninstall' 然后重新安装(不确定是一个还是两个),但解决方案的重要部分也是:pip安装 --upgrade docker-py 完美!没有任何 curl、chmod 和版本检查。只是自动安装最后一个版本。应该被接受为答案。 使用 pip 安装 docker-compose 时出现大量错误。如果你也这样做,试试这个答案***.com/a/43012312/430773【参考方案3】:

如果您通过将其官方存储库添加到存储库列表来安装 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

【讨论】:

Apt get -- 即使在添加了他们为 docker CE 指定的存储库之后,似乎也只包含 docker-compose 1.8,它与版本 2 的最大 docker-compose.yml 文件兼容。换句话说,他们不再将docker-compose 发布到apt-get 默认存储库或他们自己的apt-get 存储库。为了获得更新的版本,您似乎需要使用pip。这让我很恼火,因为它实际上是我唯一使用 pip 的东西。【参考方案4】:

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

apt-get install docker-compose

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

【讨论】:

此命令将安装版本1.25.0。当您运行docker-compose --version 时,输出将为docker-compose version 1.25.0, build unknown【参考方案5】:

我在 Raspbian OS 上的 Raspberry Pi 3 上进行安装。 curl 方法未解析为有效响应。上面还写着error: Not Found,我看了一下网址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

【讨论】:

【参考方案6】:

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

$ docker-compose -v

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

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

检查这是否有效。

【讨论】:

【参考方案7】:

只需使用 brew:

brew install docker-compose

【讨论】:

这是一个 Linux 问题。虽然 brew 适用于 Linux,但它并不常用。【参考方案8】:

参考上面给出的答案(我没有足够的声誉来单独参考个别解决方案,因此我在这个地方集体这样做),我想用一些重要的建议来补充它们:

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

    来自存储库的 docker-compose 版本为 1.8.0(至少在我看来)。此 docker-compose 版本不支持版本 3 中的配置文件。它仅支持 version = https://docs.docker.com/compose/compose-file/compose-versioning/。根据我自己在 docker 工作的经验,我建议在版本 3 中使用容器配置 - 与版本 https://docs.docker.com/compose/install/

    当您尝试手动删除旧的 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,将其放在正确的路径并赋予它正确的权限 - 所有这些过程都有在上面的帖子中有所描述。

问候, 亚当

【讨论】:

【参考方案9】:

尝试使用curl per docker docs 在 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

这意味着我尝试从中进行 curl 的 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。所以下载网址应该是“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

【讨论】:

【参考方案10】:

安装 docker 并不意味着你已经安装了 docker-compose。它的先决条件是您已经安装了已经完成的 docker 引擎。之后,您可以按照 link 为 Centos 7 安装 docker-compose。

【讨论】:

不,我确实运行了那个命令“yum install docker-engine”,但我收到错误包 docker-engine-1.11.0-1.el7.centos.x86_64 已经安装和最新版本,但仍然没有docker-compose 它给了我错误 /usr/local/bin/docker-compose: line 1: error:Not Found: command not found 就像我说的:Docker 引擎与 Docker compose 不同。因此,您可以安装 docker 引擎并仅使用 docker,但是当您想使用 docker compose 时,您需要单独安装它(引擎的安装是先决条件(您已经这样做了))。所以现在试试我在答案中给出的链接(你可以使用 curl 或 pip 来安装 docker-compose)【参考方案11】:

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

这里是安装手册的链接: https://docs.docker.com/compose/install/

TL;DR:

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

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

上述解决方案对我不起作用。但我发现这行得通:

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

【讨论】:

【参考方案14】:

在 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 或任何 路径中的其他目录。

【讨论】:

【参考方案15】:

如果您想自动安装 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需要你亲手获取的版本。但是我写了一个脚本,它会自动为你获取最新版本。

【讨论】:

【参考方案16】:

如果 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

然后最后用这个/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 而不是 Docker Compose?的主要内容,如果未能解决你的问题,请参考以下文章

docker需要安装jdk吗

项目为啥用docker?

为啥docker里面的/dev/shm没有bash权限

docker0网卡down影响

docker的宿主系统是centos,为啥可以运行ubuntu的镜像

为啥docker容器内无法启动tomcat,容器外可以