在Amazon Linux AMI上升级Docker

时间:2015-09-17 20:37:33

标签: linux amazon-web-services docker yum rhel

我想在Amazon Linux上将Docker升级到v1.8。

在撰写本文时,他们的内部yum包存储库包含:Docker version 1.7.1, build 786b29d/1.7.1

我已经尝试过的事情

Docker project's repo

手动安装
  

错误:包:docker-engine-1.8.2-1.el7.centos.x86_64(dockerrepo)   需要:systemd-units

3 个答案:

答案 0 :(得分:4)

如果您正在使用EC2容器服务,则截至撰写本文时,AWS ECS-optimized AMI(2015.09.b)正在运行docker-1.7.1。 A post in the AWS forums州" [AWS正在]测试1.9 RC并计划在本月交付。"

要扩展Hzmy的答案,请参阅以下有关如何在SSH会话中将Docker升级到1.9.0的信息:

service docker stop
cp /usr/bin/docker /usr/bin/docker.old
curl -o /usr/bin/docker https://get.docker.com/builds/Linux/x86_64/docker-1.9.0
service docker start

如果您正在使用CloudFormation模板,可以在AWS::Cloudformation::Init输入命令:

...
"commands": {
    ...,
    "03_upgrade_docker_for_log_driver_support": {
        "command": {
            "Fn::Join": [
                "",
                [
                    "#!/bin/bash -xe\n",
                    "service docker stop\n",
                    "cp /usr/bin/docker /usr/bin/docker.old\n",
                    "curl -o /usr/bin/docker https://get.docker.com/builds/Linux/x86_64/docker-1.8.3\n",
                    "service docker start\n"
                ]
            ]
        }
    }
    ...
}
...

也许不是最干净的,但似乎对我有用。

答案 1 :(得分:3)

我最终安装了Amazon Linux docker软件包,然后用https://docs.docker.com/installation/binaries/中的1.8.2版本二进制文件覆盖/usr/bin/docker二进制文件。

不完全优雅 - 但所有的依赖关系是相同的,并且看到我的AMI是不可变的,包不会在当前图像的顶部升级。

答案 2 :(得分:1)

我只是将this answer放在这里让更多人找到它,但所有信用都归Archimedes Trajano

我唯一纠正的是在最新的Amazon Linux 2 LTS Candidate上不需要haveged安装。此外,由于SELinux在Amazon Linux上默认禁用,因此所有与SELinux相关的步骤也不是必需的,但container-selinux 必需docker-ce,所以它必须是无论如何安装。防火墙启用在这里是可选的。

因此,最新Amazon 2 AMI的最终步骤可能如下所示:

yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.21-1.el7.noarch.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
usermod -a -G docker ec2-user
systemctl enable docker
systemctl start docker

所有步骤都应与sudo一起运行。在执行这些命令后重启/重新登录后,非sudo docker run将可用。