52 votes

Comment installer Docker sur une instance AWS EC2 avec AMI (CE/EE Update)

Quelle est la méthode actuelle pour installer Docker sur une instance AWS EC2 exécutant l'AMI ? Il y a eu des l'annonce de Docker Enterprise Edition et maintenant je veux savoir si quelque chose a changé. Jusqu'à présent, j'ai utilisé yum install docker et obtenir une version de Docker à 1.12.6, build 7392c3b/1.12.6 en ce moment même (3/3/2017). Cependant, le dépôt Docker sur GitHub m'indique qu'il existe déjà des versions plus récentes.

Je me souviens que le dépôt officiel de Docker (paquetage) avait un paquetage nommé docker-engine remplacer docker Il y a quelque temps, ils semblent maintenant diviser le paquet en plusieurs parties. docker-ce y docker-ee où par exemple "Docker Community Edition (Docker CE) n'est pas pris en charge sur Red Hat Enterprise Linux". [ Fuente ]

Est-il ou sera-t-il toujours correct d'utiliser ce qui précède pour obtenir la dernière version stable de Docker sur les instances EC2 exécutant l'AMI ou dois-je tirer le paquet d'un autre endroit (et si oui, lequel, CE ou EE) ?

96voto

Brenden Points 2320

Pour faire fonctionner Docker sur l'AMI AWS, vous devez suivre les étapes suivantes (en supposant que vous vous êtes connecté par ssh à l'instance EC2).

  1. Mettre à jour les paquets sur votre instance

    [ec2-user ~]$ sudo yum update -y

  2. Installer Docker

    [ec2-user ~]$ sudo yum install docker -y

  3. Démarrer le service Docker

    [ec2-user ~]$ sudo service docker start

  4. Ajoutez l'utilisateur ec2 au groupe docker afin de pouvoir exécuter des commandes Docker sans utiliser sudo.

    [ec2-user ~]$ sudo usermod -a -G docker ec2-user

Vous devriez alors être en mesure d'exécuter toutes les commandes de docker sans avoir besoin de l'aide de sudo . Après avoir exécuté la quatrième commande, j'ai dû me déconnecter et me reconnecter pour que la modification soit prise en compte.

7voto

La partie la plus difficile à comprendre a été l'exigence de container-selinux. Il suffit de trouver la dernière version dans http://mirror.centos.org/centos/7/extras/x86_64/Packages/ et l'installer en premier. En outre, les instances EC2 peuvent ne pas disposer d'un générateur d'entropie adéquat. haveged peut devoir être installé.

Le reste est tiré de https://docs.docker.com/install/linux/docker-ce/centos/ avec l'ajout de haveged et firewalld. Toutes ces opérations doivent être effectuées en tant que root, donc sudo de manière appropriée.

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

Activer SELinux en modifiant /etc/sysconfig/selinux être

SELINUX=enforcing
SELINUXTYPE=targeted

Redémarrez ensuite votre instance en lançant shutdown -r now

Exécution sudo docker version devrait céder au moment de la publication de cet article...

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

2voto

jerseyboy Points 156

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

L'actuel système Amazon ECS-o (amzn-ami-2017.09.j-amazon-ecs-optimized) se compose des éléments suivants :

  • La dernière version minimale de l'AMI Amazon Linux
  • La dernière version de l'agent de conteneur Amazon ECS (1.17.2)
  • La version recommandée de Docker pour le dernier agent de conteneur Amazon ECS (17.12.0-ce)
  • La dernière version du paquet ecs-init pour exécuter et surveiller l'agent Amazon ECS (1.17.2-1).

Vous pouvez consulter l'historique à l'adresse suivante https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html

0voto

En complément de ma réponse précédente. Si vous utilisez Terraform, j'ai également créé un module Terraform qui peut être utilisé pour créer un Docker Swarm.

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

La différence entre l'approche que j'avais adoptée précédemment et l'approche que je suis en train d'adopter. actuellement avec le module terraform est d'utiliser les paquets Docker fournis par AWS. Cela n'inclut pas l'ensemble des paquets Docker-compose et autres, mais vous n'avez pas besoin de ces paquets normalement dans un serveur.

Comme j'utilise celle fournie par Amazon, il ne s'agit plus de la dernière version 18.09 mais de la version 18.06. Cependant, la configuration est plus simple et je n'ai pas à rattraper le retard pris par container-selinux.

La seule dépendance externe que j'utilise est EPEL pour obtenir haveged parce que vous avez toujours besoin d'une bonne source aléatoire pour certaines applications.

Je me suis également appuyé sur les groupes de sécurité AWS plutôt que de configurer explicitement firewalld et j'ai utilisé le paramètre SELinux qui est proposé par défaut dans l'image AMI.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X