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

Tun*_*sie 8 linux amazon-ec2 amazon-web-services docker docker-compose

首先,让我声明我不是 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 行:不是:找不到命令”。

问题似乎是 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
Run Code Online (Sandbox Code Playgroud)

这个问题有点在这里解决:https : //github.com/docker/compose/issues/6268

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

fwiw 'uname -m' 返回 aarch64。

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

谢谢!

小智 41

您可以按照以下步骤在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 
Run Code Online (Sandbox Code Playgroud)

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

docker info 
Run Code Online (Sandbox Code Playgroud)

要安装 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
Run Code Online (Sandbox Code Playgroud)

  • @PirateApp 对于 Amazon Linux 2,您必须使用 systemctl 而不是服务: `sudo systemctl start docker` (2认同)

San*_*ole 10

按照链接安装 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
Run Code Online (Sandbox Code Playgroud)

  • 如果 https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) 解析为现有 URL,则此方法有效,但作为 OP在 aarch64 架构上运行(`uname -m` 的结果),下载的 docker-compose “二进制文件”将仅包含“Not Found”消息。我发布了另一种方法作为单独的答案。也许有一天 docker-compose 也会提供 arm64 二进制文件。 (2认同)

Til*_*uhn 9

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
Run Code Online (Sandbox Code Playgroud)

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


Ant*_*ony 8

我尝试了这里提到的所有内容,最后,这是符号链接的问题。官方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 的路径作为响应。

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