在Amazon EC2 Linux 2上安装docker-compose。9kb docker-compose文件。

49

首先声明,我不是最有品德的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。如下面URL所示。

  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行:未找到命令"。

问题似乎是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。

顺便说一下,'uname -m'返回的是aarch64。

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

谢谢!


Docker文档包括安装Docker Compose的说明。除了下载二进制文件外,您还需要使其可执行,并且可能需要其他共享库依赖项。 - David Maze
7个回答

92

点击链接安装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

4
如果https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)可以解析出现有的网址,这个方法就有效了。但是因为OP正在aarch64架构上运行(即uname -m的结果),下载下来的docker-compose“二进制文件”将只包含一个“未找到”的消息。我在另一个回答中发布了一种替代方法。也许有一天,docker-compose也会提供arm64二进制文件。 - Till Kuhn
@TillKuhn 是正确的。我正在使用基于 AMD 架构的 aach64EC2 t4g 家族,我遇到了与 OP 相同的问题。我用不同的方法解决了这个问题,我会在答案中发布。 - Muhammad Tariq
1
截至2021年10月18日,据我所知,aarch64现在是受支持的二进制文件之一,因为https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-aarch64链接现在可以解析到`docker-compose@v2.0.1`版本的构建。 - MrCranky
1
这个安装包含compose v2吗?完成后,docker compose显示“compose不是一个docker命令”。 - lmat - Reinstate Monica

35

您可以从零开始,在Amazon Linux ec2实例上按照以下步骤安装Docker:

sudo yum update -y 

sudo amazon-linux-extras install docker 

sudo yum install docker 

sudo service docker start 

sudo usermod -a -G docker ec2-user 

然后从实例中注销,再次登录以验证Docker的安装

docker info 

要安装Docker-compose,请按照以下步骤进行:

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

它也能在Amazon Linux 2上运行吗? - PirateApp
2
@PirateApp 对于Amazon Linux 2,您需要使用systemctl而不是service:sudo systemctl start docker - Ignace Vau
这应该是正确的答案。 - undefined

19

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

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

正如您已经发现的那样,有多个线程讨论此问题。最终对我有效的唯一方法是通过Python的软件包管理器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

希望这对您也起作用。祝你好运!


这个解决方案对我没有帮助。 - Bogdan Pisarenko
你是我的英雄 - 由于其他不兼容性,必须放弃Gravitron,但这个方法可安装docker-compose。 - Nicola Beghin
如果有用,这里是可使用的Ansible代码 https://gist.github.com/nicolabeghin/68e4b515a8d22e36757facb5a3be58e5 - Nicola Beghin
谢谢。是的,转换有点痛苦,特别是因为我只选择了Graviton,因为它是最便宜的最近实例类型选择,没有意识到它还涉及处理器架构的切换,我需要处理我的docker镜像。但ARM似乎越来越受到推崇,因此一般支持正在稳步增长。 - Till Kuhn
对于那些像我一样错过了这一点的人,如果由于pyconfig.h而无法构建轮,则是因为忘记了yum安装。 - Neil C. Obremski

7

我尝试了这里提到的所有方法,最终发现是符号链接的问题。 官方docker页面 给了我解决方案。

  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的路径作为响应返回。

这对我在AWS EC2实例上的Linux2操作系统上奏效了。


2

这将完成你所需的一切。 剪切。粘贴。完成。

cat ec2-al2-docker-compose.sh

#the following script will install docker and docker compose on amazon linux 2

# run this script then 
# sudo docker ps; docker-compose up 
# note docker-compose up doesnt use sudo

sudo yum update -y
sudo yum install docker git -y
sudo usermod -a -G docker ec2-user
id ec2-user
newgrp docker
sudo yum install python3-pip -y
sudo pip3 install docker-compose
sudo systemctl enable docker.service
sudo systemctl start docker.service

2

在EC2实例中安装Docker-Compose,请按照以下步骤操作

第一条命令: # 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

第三条命令: # ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

第四条命令用于验证docker compose: # docker-compose version

它将安装最新版本的docker-compose。第三条命令是必要的。


如果您有新的问题,请通过单击提问按钮来提出。如果它有助于提供上下文,请包含此问题的链接。- 来自审核 - coturiv

1
我遇到了同样的问题。我的配置是 T4Large - ARM64 - Ubuntu Server 20.04 LTS ,我使用以下命令解决了该问题。
$ sudo apt install docker-compose

这将安装较旧的docker compose版本1.25.0。在撰写本答案时,当前版本为1.29.1另一种选择是将Docker Compose作为Docker容器使用。
使用以下命令运行Docker Compose容器。
$ 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

这应该适用于任何Linux发行版和架构,如x86_64armv7l/armhfaarch64/armv8/arm64,如果您已经安装了Docker。需要注意的重要一点是,这在容器内运行compose,不需要在主机系统上安装Python。 Docker hub参考:https://hub.docker.com/r/linuxserver/docker-compose

谢谢!这也适用于 Linux 2 ARM。 - fauxxi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接