I want to upgrade Docker to v1.8 on Amazon Linux.
At the time of writing their internal yum package repository has: Docker version 1.7.1, build 786b29d/1.7.1
.
Things I have already tried
Manually installing from the Docker project's repo
Error: Package: docker-engine-1.8.2-1.el7.centos.x86_64 (dockerrepo) Requires: systemd-units
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 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
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.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
All the steps should be ran with sudo
. Non-sudo docker run will be available after reboot/relogin upon execution of these commands.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With