如何在具有AMI的AWS EC2实例上安装Docker(CE / EE Update)


28

在运行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中取出)?


2
您是否阅读了有关如何安装Docker标准的AWS文档?如果是这样,它的哪一部分无效,或者没有解决什么问题?docs.aws.amazon.com/AmazonECS/latest/developerguide/...
蒂姆·

问题是我是否可以继续这样做。如前所述,它将为我安装Docker,版本为1.12,这已经是最新稳定版本(CE / EE之前的1.13)之后的次要版本更新了,我想知道这是否是由于通常的存储库更新延迟引起的,还是因为该指南和软件包已经过时,这需要我完成一些替换工作(例如,以某种方式从自己的存储库中获取Docker?)。还涉及最新的EE公告,这可能会改变某些情况……
mxscho

运行什么AMI?
迈克尔·汉普顿

@MichaelHampton适用于HVM的最新版本是Amazon Linux AMI 2016.09.1。
mxscho

1
我想亚马逊会在他们熟悉它时对其进行更新。尽管您当然知道没有人应该将Amazon Linux用于任何用途。
迈克尔·汉普顿

Answers:


44

要使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。运行第四条命令后,我确实需要注销并重新登录以使更改生效。


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

@mxscho是的,这也是我在寻找的内容,因此请等待,直到发布解决该问题的答案。
user239558 '17

1
今天yum install安装17.03.1ce-1.50.amzn1
raarts '17

1
没有为我工作。所以我需要这样做。sudo yum install yum-utils,然后sudo yum-config-manager --enable rhui-REGION-rhel-server-extras,然后sudo yum install
docker

5

要弄清所有这些,最难的部分是container-selinux需求。只需在http://mirror.centos.org/centos/7/extras/x86_64/Packages/中找到最新版本,然后进行安装即可。另外,EC2实例可能没有适当的熵生成器,因此haveged可能需要安装。

其余部分取自https://docs.docker.com/install/linux/docker-ce/centos/,还添加了Haveged和Firewalld。所有这些都必须如此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

通过修改 /etc/sysconfig/selinux启用S​​ELinux

SELINUX=enforcing
SELINUXTYPE=targeted

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

sudo docker version截止发稿时,执行应...

客户:
 版本:18.03.0-ce
 API版本:1.37
 Go版本:go1.9.4
 Git提交:0520e24
 建成:2018年3月21日星期三23:09:15
 操作系统/ Arch:linux / amd64
 实验性:错误
 协调器:成群

服务器:
 发动机:
  版本:18.03.0-ce
  API版本:1.37(最低版本1.12)
  Go版本:go1.9.4
  Git提交:0520e24
  建成:2018年3月21日星期三23:13:03
  操作系统/ Arch:linux / amd64
  实验性:错误

1
您是否尝试过在除CentOS之外的任何其他AMI上运行Docker?您可以分享您的经验吗?
Suncatcher '18年

1
我没有使用centos Ami,而是使用AMI Linux2。Linux1太旧了。
阿基米德·特拉哈诺

1
好的,我知道了。您使用的CentOS仓库与Amazon AMI完全兼容吗?
捕手

正确的是,我使用Centos VM使用Vagrant进行开发,我只需要调整脚本以使其与缺少的软件包一起使用。
阿基米德·特拉哈诺

1
简单的偏执狂
阿基米德·特拉哈诺

2

根据https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html

当前经过Amazon ECS优化的AMI(amzn-ami-2017.09.j-amazon-ecs-optimized)包括:

  • 最新的最低版本的Amazon Linux AMI
  • 最新版本的Amazon ECS容器代理(1.17.2)
  • 最新的Amazon ECS容器代理(17.12.0-ce)的推荐版本的Docker
  • 最新版本的ecs-init程序包,用于运行和监视Amazon ECS代理(1.17.2-1)

您可以在https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html上查看历史记录


0

除了我以前的答案。如果您使用Terraform,我还创建了一个Terraform模块,可用于创建Docker Swarm

https://registry.terraform.io/modules/trajano/swarm-aws/docker

我之前完成的方法与我现在使用terraform模块执行的方法之间的区别是利用AWS提供的Docker软件包。这不包括完整的docker-compose和其他内容,但是您通常不需要在服务器中使用这些软件包。

因为我使用的是Amazon提供的版本,所以它不再是最新的18.09版本,而是18.06版本。但是,设置更简单,我不必赶上container-selinux。

我使用的唯一外部依赖关系是EPEL,因为您仍然需要某些应用程序的良好随机源。

我还依赖于AWS​​安全组,而不是显式设置firewalld并使用AMI映像中默认的SELinux设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.