How to install Docker on AWS EC2 instance with AMI (CE/EE Update)
Solution 1
To get Docker running on the AWS AMI you should follow the steps below (these are all assuming you have ssh'd on to the EC2 instance).
-
Update the packages on your instance
[ec2-user ~]$ sudo yum update -y
-
Install Docker
[ec2-user ~]$ sudo yum install docker -y
-
Start the Docker Service
[ec2-user ~]$ sudo service docker start
-
Add the ec2-user to the docker group so you can execute Docker commands without using sudo.
[ec2-user ~]$ sudo usermod -a -G docker ec2-user
You should then be able to run all of the docker commands without requiring sudo
. After running the 4th command I did need to logout and log back in for the change to take effect.
Solution 2
The hardest part to figure all of this out was the container-selinux requirement. Just find the latest version in http://mirror.centos.org/centos/7/extras/x86_64/Packages/ and install that first. In addition EC2 instances may not have a proper entropy generator so haveged
may need to be installed.
The rest is taken from https://docs.docker.com/install/linux/docker-ce/centos/ with the addition of haveged and firewalld. All these have to be done as root so sudo
appropriately.
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
Enable SELinux by modifying /etc/sysconfig/selinux
to be
SELINUX=enforcing
SELINUXTYPE=targeted
Then reboot your instance by issuing shutdown -r now
Executing sudo docker version
should yield as of the time of this posting...
Client: Version: 18.03.0-ce API version: 1.37 Go version: go1.9.4 Git commit: 0520e24 Built: Wed Mar 21 23:09:15 2018 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarm Server: Engine: Version: 18.03.0-ce API version: 1.37 (minimum version 1.12) Go version: go1.9.4 Git commit: 0520e24 Built: Wed Mar 21 23:13:03 2018 OS/Arch: linux/amd64 Experimental: false
Solution 3
Per https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html
The current Amazon ECS-optimized AMI (amzn-ami-2017.09.j-amazon-ecs-optimized) consists of:
- The latest minimal version of the Amazon Linux AMI
- The latest version of the Amazon ECS container agent (1.17.2)
- The recommended version of Docker for the latest Amazon ECS container agent (17.12.0-ce)
- The latest version of the ecs-init package to run and monitor the Amazon ECS agent (1.17.2-1)
You can see the history at https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html
Related videos on Youtube
mxscho
Updated on September 18, 2022Comments
-
mxscho over 1 year
What is the current way of installing Docker on an AWS EC2 instance running the AMI? There has been an announcement of Docker Enterprise Edition and now I want to know if anything has changed. Until now, I have been using
yum install docker
and do get a Docker versioned at1.12.6, build 7392c3b/1.12.6
right now (3/3/2017). However, the Docker repository on GitHub tells me that there are already newer releases.I remember the official Docker (package) repository having a package named
docker-engine
replacingdocker
some time ago and now they seem to split the package up intodocker-ce
anddocker-ee
, where e.g. "Docker Community Edition (Docker CE) is not supported on Red Hat Enterprise Linux." [Source]So is or will it still be correct to use the above to get the latest stable Docker version on EC2 instances running the AMI or do I need to pull the package from somewhere else (and if so which one, CE or EE)?
-
Tim about 7 yearsDid you read the AWS documentation on how to install Docker standard? If so what part of it didn't work, or what issues didn't it address? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
-
mxscho about 7 yearsThe question is whether I can continue to do it like this. As already mentioned it'll install me Docker versioned at 1.12 which is already one if not more minor version updates behind the latest stable release (1.13, before CE/EE) and I wonder if this is due to the usual repository update delay or because the guide and package simply being outdated which requires some replacement work done by me (e.g. somehow getting Docker from their own repository?). Also concerning the latest EE announcement which might change something...
-
Michael Hampton about 7 yearsRunning what AMI?
-
mxscho about 7 years@MichaelHampton the latest one for HVM, Amazon Linux AMI 2016.09.1.
-
Michael Hampton about 7 yearsI suppose Amazon will update it when they get around to it. Though you know of course that nobody should be using Amazon Linux for anything.
-
mxscho about 7 yearsIf that is the real solution to this problem this does make me a little sad. However thanks for the hint, I haven't had too much experience with EC2 yet to get to this conclusion by myself. I always thought it's the best to use AMI because it (should be) is the most updated and adapted image concerning the EC2 virtualization.
-
Tim about 7 yearsThe packages are all updated, the kernel. However I do find Ubuntu much easier for software installation and general support, there are few Amazon Linux resources so difficult things are made even more difficult.
-
jordanm about 7 years@MichaelHampton Amazon Linux is fine for ECS usage. It's pre-configured for ECS usage, and the underlying OS doesn't matter much in that case.
-
Suncatcher almost 6 years@MichaelHampton,
nobody should be using Amazon Linux for anything
so what AMI do you propose then, sir?
-
-
mxscho almost 7 yearsLike I already mentioned in the question, this indeed works, but installs an outdated version of Docker (still version 1.12.6 on 05/28/2017). While I myself have switched to the Ubuntu image for my EC2 instances, the real thing I wanted to know is how to install one of the current versions of Docker on an AMI image. Because there (at least at the time of the question) was no obvious way to either get an up-to-date Docker CE or a Docker EE installation. That is what this question was about in the first place and that's the reason why I cannot accept it without hesitation. Thank you anyways!
-
user239558 almost 7 years@mxscho yes that's also what I'm looking for, so please wait until an answer that addresses the question is posted.
-
raarts almost 7 yearsToday yum install installs 17.03.1ce-1.50.amzn1
-
Suncatcher almost 6 yearsHave you tried running Docker on any other AMIs except CentOS? Can you share your expriences?
-
Archimedes Trajano almost 6 yearsI didn't use the centos Ami I used the AMI Linux 2. The Linux 1 is too old.
-
Suncatcher almost 6 yearsOK, got it. Are CentOS repos you used fully compatible with Amazon AMI?
-
Archimedes Trajano almost 6 yearsRight I use Centos VMs for development using Vagrant, I just had to adapt my scripts so that it works with missing packages.
-
Suncatcher almost 6 yearsIn the first comment you said you used AMI Linux 2, and now you says about CentOS VMs :) So do above commands work for Amazon AMI or not?
-
Archimedes Trajano almost 6 yearsI user ami2 in ec2 and centos on my vagrant setup on windows.
-
Archimedes Trajano almost 6 yearsSimple paranoia
-
TheAshwaniK almost 5 yearsDid not work for me. So I needed to do this. sudo yum install yum-utils , and then sudo yum-config-manager --enable rhui-REGION-rhel-server-extras , and then sudo yum install docker