如何在 Amazon Linux2 上安装 docker

How to install docker on Amazon Linux2

我想为 Amazon ECR 创建 docker 图像。 但是 yum 在我的 Amazon Linux2 中找不到它。

[root@*** ~]# yum install -y docker
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
No package docker available.
Error: Nothing to do

接下来,我尝试使用amazon-linux-extras。

但是 amazon-linux-extras 也没有找到。

[root@*** ~]# amazon-linux-extras install docker -y
-bash: amazon-linux-extras: command not found
[root@*** ~]# find / -name 'amazon-linux-extras'
[root@*** ~]$ cat /proc/version
Linux version 4.14.77-81.59.amzn2.x86_64 (mockbuild@ip-10-0-1-59) (gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC)) #1 SMP Mon Nov 12 21:32:48 UTC 2018

如何安装 amazon-linux-extras 或创建 docker 图像?

确保您安装了 amazon-linux-extras

[root@ip-20-0-0-112 ~]# which amazon-linux-extras
/usr/bin/amazon-linux-extras

如果不安装 amazon-linux-extras 使用 yum

yum -y install amazon-linux-extras

然后使用

安装 docker
amazon-linux-extras install docker

对不起,是我的误会。 我的 OS 是 Redhat Linux。 我通过

安装 docker
yum-config-manager --enable rhui-REGION-rhel-server-extras
yum -y install docker 
systemctl start docker
docker version

我在亚马逊 linux (RHEL 7.2) - ami-035b3c7efe6d061d5,

cat /proc/version
Linux version 4.14.123-86.109.amzn1.x86_64 (mockbuild@koji-pdx-corp-builder-64004) (gcc version 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC)) #1 SMP Mon Jun 10 19:44:53 UTC 2019

无需安装即可使用以下脚本 amazon-linux-extras install

sudo yum -y install docker 
sudo service docker start
sudo chmod 666 /var/run/docker.sock

我必须解决权限问题。这里也有描述

然后我可以检查容器,

[ec2-user@ip-30-0-0-196 ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

For the Amazon Linux AMI, access to the Extra Packages for Enterprise Linux (EPEL) repository is configured, but it is not enabled by default.

要安装 amazon-linux-extras,请验证从实例内部到 Internet 的连接,然后检查实例的 OS:

cat /etc/os-release

如果OS是亚马逊linux 版本2 运行

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

或运行sudo yum-config-manager --enable epel

使用 EPEL 存储库。您现在可以安装可用的软件包...例如sudo amazon-linux-extras install docker

有关详细信息,请参阅 aws documentation

安装Docker

sudo yum update -y
sudo yum -y install docker

开始Docker

sudo service docker start

ec2-user 用户

中访问 Docker 命令
sudo usermod -a -G docker ec2-user
sudo chmod 666 /var/run/docker.sock
docker version

Amazon Linux 2 安装了 amazon-linux-extras。如果你认为你是 运行 Amazon Linux 2,并且 amazon-linux-extras 不在 ec2-user 的路径上,你可能是 运行 一个更老的亚马逊版本 Linux。 运行 这个命令:

grep PRETTY_NAME /etc/os-release 

应该输出

PRETTY_NAME="Amazon Linux 2"

如果您没有看到,请返回 ec2 控制台并深入了解实例的详细信息。单击 AMI 应该会显示它对应于旧版本的 Amazon Linux。某些 AWS 设施,特别是 CDK,当前在创建新实例时默认使用 Amazon Linux 而不是 Amazon Linux 2。

我在尝试基于 Amazon Linux 2 设置 docker 图片时遇到了这个问题。 我在当前答案中没有找到的是 docker 需要在安装前在 amazon-linux-extras 中启用。 对我有用的 Dockerfile 命令:

RUN yum install -y amazon-linux-extras
RUN amazon-linux-extras enable docker
RUN yum install -y docker

您可以使用以下脚本在 Amazon Linux 2 实例中安装 docker。此外,您可以在 ec2 用户数据部分提及以下脚本,以便在服务器 bootstrap docker 时自动安装。

#!/bin/bash
sudo yum update -y
sudo yum -y install docker
sudo service docker start
sudo usermod -a -G docker ec2-user
sudo chmod 666 /var/run/docker.sock