So installieren Sie Docker auf einer AWS EC2-Instanz mit AMI (CE / EE-Update)

Wie wird Docker derzeit auf einer AWS EC2-Instanz installiert, auf der das AMI ausgeführt wird?Es gab ankündigung der Docker Enterprise Edition und jetzt möchte ich wissen, ob sich etwas geändert hat.Bis jetzt habe ich benutzt yum install docker und holen Sie sich eine Docker-Version unter 1.12.6, build 7392c3b/1.12.6 gerade jetzt (3/3/2017). Jedoch, das Docker-Repository auf GitHub sagt mir, dass es bereits neuere Versionen gibt.

Ich erinnere mich an das offizielle Docker (Paket) -Repository mit einem Paket namens docker-engine ersetzen docker vor einiger Zeit und jetzt scheinen sie das Paket aufzuteilen in docker-ce und docker-ee, wobei z.B. "Docker Community Edition (Docker CE) unter Red Hat Enterprise Linux nicht unterstützt wird." [Quelle]

Ist oder ist es immer noch richtig, das Obige zu verwenden, um die neueste stabile Docker-Version auf EC2-Instanzen zu erhalten, auf denen das AMI ausgeführt wird, oder muss ich das Paket von einem anderen Ort abrufen (und wenn ja, von welchem, CE oder EE)?

Um Docker auf dem AWS AMI zum Laufen zu bringen, sollten Sie die folgenden Schritte ausführen (dies setzt voraus, dass Sie sich mit ssh an der EC2-Instanz angemeldet haben).

  1. Aktualisieren Sie die Pakete auf Ihrer Instanz

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

  2. Docker installieren

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

  3. Starten Sie den Docker-Dienst

    [ec2-user ~]$ sudo service docker start

  4. Fügen Sie den ec2-Benutzer zur Docker-Gruppe hinzu, damit Sie Docker-Befehle ausführen können, ohne sudo zu verwenden.

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

Sie sollten dann in der Lage sein, alle Docker-Befehle auszuführen, ohne dass dies erforderlich ist sudo. Nach dem Ausführen des 4. Befehls musste ich mich abmelden und wieder anmelden, damit die Änderung wirksam wurde.

Der schwierigste Teil, um all dies herauszufinden, war die Container-Selinux-Anforderung. Finden Sie einfach die neueste Version in http://mirror.centos.org/centos/7/extras/x86_64/Packages/ und installiere das zuerst. Außerdem verfügen EC2-Instanzen möglicherweise nicht über einen geeigneten Entropiegenerator haveged möglicherweise muss installiert werden.

Der Rest stammt von https://docs.docker.com/install/linux/docker-ce/centos/ mit dem Zusatz von haveged und firewalld. All dies muss als root gemacht werden, also sudo angemessen.

yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.42-1.gitad8f0f7.el7.noarch.rpmyum install -q -y http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/h/haveged-1.9.1-1.el7.x86_64.rpmyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -q -y firewalld docker-cesystemctl enable firewalldsystemctl start firewalldfirewall-cmd --add-port=2377/tcp --permanentfirewall-cmd --add-port=2376/tcp --permanentfirewall-cmd --add-port=7946/tcp --permanentfirewall-cmd --add-port=7946/udp --permanentfirewall-cmd --add-port=4789/udp --permanentfirewall-cmd --zone=public --permanent --add-masqueradefirewall-cmd --reloadsystemctl enable havegedsystemctl start havegedsystemctl enable dockersystemctl start dockersetenforce 1

SELinux aktivieren durch Modifizieren /etc/sysconfig/selinux sein

SELINUX=enforcingSELINUXTYPE=targeted

Starten Sie dann Ihre Instanz neu, indem Sie Folgendes ausgeben shutdown -r now

Vollstreckungsstaat sudo docker version sollte zum Zeitpunkt dieses Beitrags nachgeben...

Client: Version: 18.03.0-ce API-Version: 1.37 Go-Version: go1.9.4 Git-Commit: 0520e24 Erstellt: Mi 21. März 23:09:15 2018 Betriebssystem / Bogen: linux / amd64 Experimentell: falsch Orchestrator: Schwarmserver: Engine: Version: 18.03.0-ce API-Version: 1.37 (Mindestversion 1.12) Go-Version: go1.9.4 Git-Commit: 0520e24 Erstellt: Mi 21. März 23:13:03 2018 Betriebssystem / Bogen: linux / amd64 Experimentell: falsch

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

Das aktuelle Amazon ECS-optimierte AMI (amzn-ami-2017.09.j-amazon-ecs-optimiert) besteht aus:

  • Die neueste Minimalversion des Amazon Linux AMI
  • Die neueste Version des Amazon ECS Container Agent (1.17.2)
  • Die empfohlene Version von Docker für den neuesten Amazon ECS Container Agent (17.12.0-ce)
  • Die neueste Version des Pakets ecs-init zum Ausführen und Überwachen des Amazon ECS-Agenten (1.17.2-1)

Sie können die Geschichte unter sehen https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html

Zusätzlich zu meiner vorherigen Antwort. Wenn Sie Terraform verwenden, habe ich auch ein Terraform-Modul erstellt, mit dem Sie einen Docker-Schwarm erstellen können

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

Der Unterschied zwischen dem Ansatz, den ich zuvor gemacht hatte, und dem Ansatz, den ich bin derzeit mit dem Terraform-Modul können Sie die von AWS bereitgestellten Docker-Pakete verwenden. Dies beinhaltet nicht die vollständige Docker-Compose und was nicht, aber Sie benötigen diese Pakete normalerweise nicht auf einem Server.

Da ich die von Amazon bereitgestellte verwende, handelt es sich nicht mehr um die neueste Version 18.09, sondern um die Version 18.06. Das Setup ist jedoch einfacher und ich muss Container-Selinux nicht nachholen.

Die einzige externe Abhängigkeit, die ich verwende, ist EPEL, um haveged zu erhalten, da Sie für einige Anwendungen immer noch eine gute zufällige Quelle benötigen.

Ich habe mich auch auf die AWS-Sicherheitsgruppen verlassen, anstatt Firewalld explizit einzurichten, und die SELinux-Einstellung verwendet, die im AMI-Image standardmäßig festgelegt ist.

Haben Sie die AWS-Dokumentation zur Installation von Docker Standard gelesen? Wenn ja, welcher Teil davon hat nicht funktioniert oder welche Probleme wurden nicht angesprochen? Creating a container image for use on Amazon ECS - Amazon Elastic Container Service

Ich nehme an, Amazon wird es aktualisieren, wenn sie dazu kommen. Obwohl Sie natürlich wissen, dass niemand Amazon Linux für irgendetwas verwenden sollte.

Die Frage ist, ob ich es so weitermachen kann. Wie bereits erwähnt, wird mir Docker mit der Versionsnummer 1.12 installiert, was bereits eines, wenn nicht mehr kleinere Versionsupdates hinter der neuesten stabilen Version (1.13, vor CE / EE) ist, und ich frage mich, ob dies an der üblichen Verzögerung der Repository-Aktualisierung liegt oder weil die Anleitung und das Paket einfach veraltet sind, was einige von mir durchgeführte Ersatzarbeiten erfordert (z. B. irgendwie Docker aus dem eigenen Repository holen?). Auch in Bezug auf die neueste EE-Ankündigung, die etwas ändern könnte…

Laufen was AMI?

@MichaelHampton das neueste für HVM, Amazon Linux AMI 2016.09.1.

Wenn das die wirkliche Lösung für dieses Problem ist, macht mich das ein bisschen traurig. Aber danke für den Hinweis, ich habe noch nicht allzu viel Erfahrung mit EC2, um selbst zu diesem Schluss zu kommen. Ich dachte immer, es ist das Beste, AMI zu verwenden, da es das aktuellste und am besten angepasste Image in Bezug auf die EC2-Virtualisierung ist (sollte).

Die Pakete sind alle aktualisiert, der Kernel. Allerdings finde ich Ubuntu für die Softwareinstallation und den allgemeinen Support viel einfacher, es gibt nur wenige Amazon Linux-Ressourcen, so dass schwierige Dinge noch schwieriger werden.

@MichaelHampton Amazon Linux ist für die ECS-Nutzung in Ordnung. Es ist für die ECS-Nutzung vorkonfiguriert, und das zugrunde liegende Betriebssystem spielt in diesem Fall keine große Rolle.

@MichaelHampton` ‘niemand sollte Amazon Linux für irgendetwas verwenden’ also, was AMI schlagen Sie dann vor, Sir?