web-dev-qa-db-fra.com

Comment installer Docker sur une instance AWS EC2 avec AMI (mise à jour CE / EE)

Quelle est la façon actuelle d'installer Docker sur une instance AWS EC2 exécutant l'AMI? Il y a eu ne annonce de Docker Enterprise Edition et maintenant je veux savoir si quelque chose a changé. Jusqu'à présent, j'utilisais yum install docker et obtenez un Docker versionné à 1.12.6, build 7392c3b/1.12.6 maintenant (3/3/2017). Cependant, le dépôt Docker sur GitHub me dit qu'il existe déjà des versions plus récentes.

Je me souviens du dépôt Docker (package) officiel ayant un package nommé docker-engine remplaçant docker il y a quelque temps et maintenant ils semblent diviser le paquet en docker-ce et docker-ee, où par exemple "Docker Community Edition (Docker CE) n'est pas pris en charge sur Red Hat Enterprise Linux." [ Source ]

Est-il donc 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 extraire le package ailleurs (et si oui, lequel, CE ou EE)?

34
mxscho

Pour que Docker s'exécute sur l'AWS AMI, vous devez suivre les étapes ci-dessous (elles supposent toutes que vous avez accédé à l'instance EC2).

  1. Mettez à jour les packages sur votre instance

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

  2. Installer Docker

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

  3. Démarrez le service Docker

    [ec2-user ~]$ Sudo service docker start

  4. Ajoutez l'utilisateur ec2 au groupe docker pour pouvoir exécuter des commandes Docker sans utiliser Sudo.

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

Vous devriez alors pouvoir exécuter toutes les commandes du docker sans avoir besoin de Sudo. Après avoir exécuté la 4e commande, je devais me déconnecter et me reconnecter pour que la modification prenne effet.

58
ajtrichards

La partie la plus difficile à comprendre tout cela était l'exigence de conteneur-selinux. Trouvez simplement la dernière version dans http://mirror.centos.org/centos/7/extras/x86_64/Packages/ et installez-la en premier. De plus, les instances EC2 peuvent ne pas avoir de générateur d'entropie approprié, il peut donc être nécessaire d'installer haveged.

Le reste est tiré de https://docs.docker.com/install/linux/docker-ce/centos/ avec l'ajout de haged et firewalld. Tout cela doit être fait 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 émettant shutdown -r now

Exécution de Sudo docker version devrait céder au moment de cette publication ...

 Client: 
 Version: 18.03.0-ce 
 Version API: 1.37 
 Version Go: go1.9.4 
 Git commit: 0520e24 
 Construit: Wed Mar 21 23:09:15 2018 
 OS/Arch: linux/AMD64 
 Expérimental: faux 
 Orchestrateur: essaim 
 
 Serveur: 
 Moteur: 
 Version: 18.03.0-ce 
 Version API: 1.37 (version minimale 1.12) 
 Version Go: go1.9.4 
 Git commit: 0520e24 
 Construit: Wed Mar 21 23:13:03 2018 
 OS/Arch: linux/AMD64 
 Expérimental: faux 
6

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

L'AMI actuelle optimisée pour Amazon ECS (amzn-AMI-2017.09.j-Amazon-ecs-optimisée) comprend:

  • La dernière version minimale d'Amazon Linux AMI
  • 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 package ecs-init pour exécuter et surveiller l'agent Amazon ECS (1.17.2-1)

Vous pouvez voir l'historique sur https://docs.aws.Amazon.com/AmazonECS/latest/developerguide/ecs-AMI-versions.html

2
Plutext

En plus 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 faite précédemment et l'approche que je fais actuellement avec le module terraform est d'utiliser les packages Docker fournis par AWS. Cela n'inclut pas le docker-compose complet et ce qui ne l'est pas, mais vous n'avez pas besoin de ces packages normalement sur un serveur.

Parce que j'utilise celui qu'Amazon avait fourni, ce n'est plus la dernière version 18.09 mais la version 18.06. Cependant, la configuration est plus simple et je n'ai pas à jouer au rattrapage de container-selinux.

La seule dépendance externe que j'utilise est EPEL pour se faufiler car 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 par défaut dans l'image AMI.

0
Archimedes Trajano