【问题标题】:Installing docker-compose on Amazon EC2 Linux 2. 9kb docker-compose file在 Amazon EC2 Linux 2 上安装 docker-compose。9kb docker-compose 文件
【发布时间】:2020-12-21 18:29:46
【问题描述】:

首先,让我声明我不是最有德行的 Linux 用户,所以对我来说是赤裸裸的...... 以下是我采取的所有步骤的简要说明。最终的问题/问题是,我似乎不可能下载正确的 docker-compose 安装。

  1. 按照说明安装 docker https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html
  2. 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

尝试了上述命令的 4 种变体来尝试安装 docker-compose。如以下网址所示。

  1. https://www.codegrepper.com/code-examples/php/how+to+install+docker+compose+in+ec2
  2. https://portal.cloud303.io/forum/aws-1/question/i-want-to-install-docker-compose-on-an-amazon-linux-2-ec2-instance-9
  3. https://acloudxpert.com/how-to-install-docker-compose-on-amazon
  4. https://gist.github.com/npearce/6f3c7826c7499587f00957fee62f8ee9 当输入“docker-compose”、“sudo docker-compose”等时,它只会说

“第 1 行:Not:找不到命令”。

似乎是 docker-compose 文件大小只有 9kb 的问题。因为这是我每次使用上述 docker-compose 安装序列时得到的结果。

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     9  100     9    0     0     58      0 --:--:-- --:--:-- --:--:--    58

这个问题在这里得到了解决: https://github.com/docker/compose/issues/6268

据说不支持该操作系统或我们正在运行 32 位实例,但这似乎很奇怪,因为上述所有教程都是专门针对 AWS EC2 Linux 2 的。

fwiw 'uname -m' 返回 aarch64。

那么,有没有人知道如何获取完整版的 docker-compose 而不是 9kb 文件?

谢谢!

【问题讨论】:

  • Docker 文档包含对Install Docker Compose 的说明。除了下载二进制文件之外,您还需要使其可执行,并且您可能需要额外的共享库依赖项。

标签: linux amazon-web-services docker amazon-ec2 docker-compose


【解决方案1】:

按照链接安装 docker-compose link

基本上只有以下两步:

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

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

docker-compose version

【讨论】:

  • 这在https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) 解析为现有 URL 时有效,但由于 OP 在 aarch64 架构上运行(uname -m 的结果),下载的 docker-compose“二进制”将仅包含“未找到”消息。我发布了另一种方法作为单独的答案。也许有一天 docker-compose 也会提供 arm64 二进制文件。
  • @TillKuhn 是正确的。我正在使用基于 AMD 架构的带有 aach64 的 EC2 t4g 系列,我面临与 OP 相同的问题。我用另一种方法解决了这个问题,我将把它作为答案发布。
  • FWIW 截至 2021 年 10 月 18 日,aarch64 现在似乎是受支持的二进制文件,因为 github.com/docker/compose/releases/latest/download/… 链接现在解析为 docker-compose@v2.0.1 的构建
【解决方案2】:

Amazon Linux“只是”操作系统,但编译后的二进制文件还取决于您的处理器架构。例如,EC2 t3a 系列基于 x86_64 架构,而新的 t4g 类型是 aarch64(即我遇到与您类似的问题并最终出现在这里的原因)。 uname -m 返回该标识符,在您的情况下显然是 aarch64

由于 docker-compose github repo 不包含此架构的已发布二进制文件(与 x86_64 相对),已解析的完整下载 URL 返回“未找到”正文而不是预期的二进制文件,因此当您尝试执行它时描述的错误消息。

正如您已经发现的那样,有多个线程在讨论这个问题。最终对我有用的唯一方法是通过 python 的 packaga 管理器 pip 手动安装 docker-compose。由于这种方法涉及几个编译步骤,因此您需要添加各种额外的 OS 包,并且在此过程中可能会遇到其他与依赖关系相关的错误。但以下步骤最终对我有用:

uname -s -m
1> Linux aarch64
cat /etc/system-release
1> Amazon Linux release 2 (Karoo)

sudo yum install -y python37 \
    python3-devel.$(uname -m) libpython3.7-dev \
    libffi-devel openssl-devel 
# need gcc and friends
sudo yum groupinstall -y "Development Tools"
# make sure pip is up2date
sudo python3 -m pip install -U pip
python3 -m pip install docker-compose 
docker-compose --version

1> docker-compose version 1.27.4, build unknown

希望它也适用于您。祝你好运!

【讨论】:

  • 这个解决方案对我没有帮助。
  • 你是我的英雄 - 不得不放弃 gravitron 以解决其他不兼容问题,但这确实是安装 docker-compose 的诀窍
  • 如果有用,这里可以使用 Ansible gist gist.github.com/nicolabeghin/68e4b515a8d22e36757facb5a3be58e5
  • 谢谢。是的,切换有点痛苦,特别是因为我只选择了 Graviton b/c,它是最近最便宜的实例类型选择,但没有首先意识到它还涉及处理器架构的切换,并且需要处理我的 docker 映像。但最近 ARM 似乎受到越来越多的推动,因此总体支持正在稳步增长。
  • 对于那些错过它的人(比如我),如果你因为pyconfig.h 而无法构建轮子,那么你忘记了 yum 安装。
【解决方案3】:

我遇到了同样的问题。我的配置是 T4Large - ARM64 - Ubuntu Server 20.04 LTS,我使用以下命令解决了

$ sudo apt install docker-compose

这将安装 docker compose 的 1.25.0 版本,它有点旧。在撰写此答案时,当前版本为1.29.1

另一种选择是使用Docker Compose作为Docker Container

使用以下命令运行 Docker Compose Container

$ sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

如果您已经安装了 docker,这应该适用于任何 Linux 发行版和架构,如 x86_64armv7l/armhfaarch64/armv8/arm64

需要注意的重要一点是,它在容器内运行compose,并且不需要在主机系统上安装python。

Docker 集线器参考:https://hub.docker.com/r/linuxserver/docker-compose

【讨论】:

  • 谢谢!这也适用于 linux 2 arm
【解决方案4】:

我尝试了这里提到的所有内容,最后,这是符号链接的问题。 official docker page 给了我解决方案。

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

如果在该命令之后它不起作用,请检查您是否可以在您的 bin 文件夹中找到 docker,例如与:ls /usr/local/bin/

如果你能在那里看到 docker-compose,那你几乎成功了。

  1. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

检查 docker-compose 是否存在以及 Linux 是否能够找到它的简单方法是使用 `which docker-compose,如果链接正确,您将获得 docker-compose 的路径作为响应。

这在以 Linux2 作为操作系统的 AWS EC2 实例上对我有用。

【讨论】:

    猜你喜欢
    • 2022-07-09
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多