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)?
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).
Mettez à jour les packages sur votre instance
[ec2-user ~]$ Sudo yum update -y
Installer Docker
[ec2-user ~]$ Sudo yum install docker -y
Démarrez le service Docker
[ec2-user ~]$ Sudo service docker start
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.
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
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
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.