如何使用 AMI 在 AWS EC2 实例上安装 Docker(CE/EE 更新)

mxs*_*cho 45 installation amazon-ami amazon-ec2 amazon-web-services docker

在运行 AMI 的 AWS EC2 实例上安装 Docker 的当前方法是什么?已经发布了 Docker 企业版,现在我想知道是否有任何变化。到现在为止,我一直在使用yum install docker并且现在确实获得了 Docker 版本1.12.6, build 7392c3b/1.12.6(2017 年 3 月 3 日)。但是,GitHub 上的 Docker 存储库告诉我已经有更新的版本了。

我记得有官方多克尔(包)库名为包docker-engine更换docker前一段时间,现在他们似乎分成了包成docker-cedocker-ee,其中如“不支持红帽企业Linux泊坞社区版(CE泊坞窗)。” [来源]

那么,使用上述方法在运行 AMI 的 EC2 实例上获取最新的稳定 Docker 版本是否正确,或者我是否需要从其他地方提取软件包(如果是,是 CE 还是 EE)?

小智 78

要让 Docker 在 AWS AMI 上运行,您应该按照以下步骤操作(这些步骤都假设您已通过 ssh 连接到 EC2 实例)。

  1. 更新实例上的软件包

    [ec2-user ~]$ sudo yum update -y

  2. 安装 Docker

    [ec2-user ~]$ sudo yum install docker -y

  3. 启动 Docker 服务

    [ec2-user ~]$ sudo service docker start

  4. 将 ec2-user 添加到 docker 组,这样您就可以在不使用 sudo 的情况下执行 Docker 命令。

    [ec2-user ~]$ sudo usermod -a -G docker ec2-user

然后,您应该能够运行所有 docker 命令而无需sudo. 运行第四个命令后,我确实需要注销并重新登录以使更改生效。

  • 就像我在问题中已经提到的那样,这确实有效,但安装了过时的 Docker 版本(2017 年 5 月 28 日仍然是 1.12.6 版)。虽然我自己已经为我的 EC2 实例切换到 Ubuntu 映像,但我真正想知道的是如何在 AMI 映像上安装当前版本的 Docker 之一。因为(至少在提出问题时)没有明显的方法可以获取最新的 Docker CE 或 Docker EE 安装。这就是这个问题的首要内容,这就是为什么我不能毫不犹豫地接受它的原因。还是谢谢你! (3认同)

Arc*_*ano 7

解决所有这些问题最难的部分是容器-selinux 要求。只需在http://mirror.centos.org/centos/7/extras/x86_64/Packages/ 中找到最新版本并先安装即可。此外,EC2 实例可能没有合适的熵生成器,因此haveged可能需要安装。

其余部分取自https://docs.docker.com/install/linux/docker-ce/centos/,并添加了 hasged 和 firewalld。所有这些都必须以 root 身份正确完成sudo

yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.42-1.gitad8f0f7.el7.noarch.rpm
yum install -q -y http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/h/haveged-1.9.1-1.el7.x86_64.rpm
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -q -y firewalld docker-ce
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --add-port=2377/tcp --permanent
firewall-cmd --add-port=2376/tcp --permanent
firewall-cmd --add-port=7946/tcp --permanent
firewall-cmd --add-port=7946/udp --permanent
firewall-cmd --add-port=4789/udp --permanent
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
systemctl enable haveged
systemctl start haveged
systemctl enable docker
systemctl start docker
setenforce 1
Run Code Online (Sandbox Code Playgroud)

通过修改 /etc/sysconfig/selinux启用 SELinux

SELINUX=enforcing
SELINUXTYPE=targeted
Run Code Online (Sandbox Code Playgroud)

然后通过发出重新启动您的实例 shutdown -r now

sudo docker version截至本文发布时,执行应产生...

客户:
 版本:18.03.0-ce
 API 版本:1.37
 转版本:go1.9.4
 Git提交:0520e24
 内置:2018 年 3 月 21 日星期三 23:09:15
 操作系统/架构:linux/amd64
 实验:假
 编排:swarm

服务器:
 引擎:
  版本:18.03.0-ce
  API 版本:1.37(最低版本 1.12)
  转版本:go1.9.4
  Git提交:0520e24
  内置:2018 年 3 月 21 日星期三 23:13:03
  操作系统/架构:linux/amd64
  实验:假