为啥安装了 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 -s
和 uname -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
。所以下载网址应该是“v”
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
【讨论】:
【参考方案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?的主要内容,如果未能解决你的问题,请参考以下文章