Upgrading Docker on Amazon Linux AMI Upgrading Docker on Amazon Linux AMI docker docker

Upgrading Docker on Amazon Linux AMI


If you're using the EC2 Container service, the AWS ECS-optimized AMI (2015.09.b) is running docker-1.7.1 as of this writing. A post in the AWS forums states "[AWS is] testing 1.9 RC and plan to deliver it this month."

To expand on Hzmy's answer, here's how to upgrade Docker to 1.9.0 in an SSH session:

service docker stopcp /usr/bin/docker /usr/bin/docker.oldcurl -o /usr/bin/docker https://get.docker.com/builds/Linux/x86_64/docker-1.9.0service docker start

If you're using CloudFormation templates, here's a command you can drop in your 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"                ]            ]        }    }    ...}...

Maybe not the cleanest, but it seems to work for me.


I ended up installing the Amazon Linux docker package and then overwriting the /usr/bin/docker binary with the 1.8.2 version binary from: https://docs.docker.com/installation/binaries/.

Not exactly elegant - but all of the dependencies are the same, and seeing as my AMI is immutable the package won't be upgraded on top of the current image.


I just put this answer here for more people to find it, but all the credits to Archimedes Trajano.

The only thing I corrected is that haveged installation is not necessary on the latest Amazon Linux 2 LTS Candidate. Also, since SELinux is disabled by default on Amazon Linux, so all the steps realated to SELinux are not necessary too, but container-selinux is required by docker-ce, so it must be installed anyway. Firewall enabling is optional here.

So, final steps for latest Amazon 2 AMI could look like this:

yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.99-1.el7.noarch.rpmyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -q -y firewalld docker-cesystemctl enable firewalldsystemctl start firewalldfirewall-cmd --add-port=2377/tcp --permanentfirewall-cmd --add-port=2376/tcp --permanentfirewall-cmd --add-port=7946/tcp --permanentfirewall-cmd --add-port=7946/udp --permanentfirewall-cmd --add-port=4789/udp --permanentfirewall-cmd --zone=public --permanent --add-masqueradefirewall-cmd --reloadusermod -a -G docker ec2-usersystemctl enable dockersystemctl start docker

All the steps should be ran with sudo. Non-sudo docker run will be available after reboot/relogin upon execution of these commands.