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

28

Wie kann Docker derzeit auf einer AWS EC2-Instanz installiert werden, auf der AMI ausgeführt wird? Es gab eine Ankündigung von Docker Enterprise Edition und jetzt möchte ich wissen , ob sich etwas geändert hat. Bisher yum install dockerhabe ich einen Docker verwendet und erhalte ihn ab 1.12.6, build 7392c3b/1.12.6sofort (03.03.2017). Das Docker-Repository auf GitHub teilt mir jedoch mit, dass es bereits neuere Versionen gibt.

Ich erinnere mich an die offizielle Docker (Paket) Repository ein Paket mit dem Namen mit docker-engineErsatz dockervor einiger Zeit , und jetzt scheinen sie das Paket aufzuspalten in docker-ceund docker-ee, wo zB „Docker Community Edition (CE Docker) nicht auf Red Hat Enterprise Linux unterstützt.“ [ Quelle ]

Ist es also richtig oder ist es immer noch richtig, obige Anweisungen zu verwenden, um die neueste stabile Docker-Version auf EC2-Instanzen zu erhalten, auf denen AMI ausgeführt wird?

mxscho
quelle
2
Haben Sie die AWS-Dokumentation zur Installation des Docker-Standards gelesen? Wenn ja, welcher Teil davon hat nicht funktioniert oder welche Probleme wurden nicht behoben? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
Tim
Die Frage ist, ob ich so weitermachen kann. Wie bereits erwähnt, wird Docker mit Version 1.12 installiert. Dies ist bereits ein, wenn nicht sogar ein weiteres, geringfügiges Versionsupdate hinter der neuesten stabilen Version (1.13, vor CE / EE). Ich frage mich, ob dies auf die übliche Verzögerung beim Repository-Update zurückzuführen ist oder nicht Der Leitfaden und das Paket sind einfach veraltet, was einige von mir durchgeführte Austauscharbeiten erfordert (z. B. irgendwie Docker aus dem eigenen Repository beziehen?). Auch in Bezug auf die neueste EE Ankündigung, die etwas ändern könnte ...
mxscho
Laufen was AMI?
Michael Hampton
@MichaelHampton die neueste für HVM, Amazon Linux AMI 2016.09.1.
mxscho
1
Ich nehme an, Amazon wird es aktualisieren, wenn sie dazu kommen. Sie wissen natürlich, dass niemand Amazon Linux für irgendetwas verwenden sollte.
Michael Hampton

Antworten:

44

Um Docker auf dem AWS AMI zum Laufen zu bringen, befolgen Sie die folgenden Schritte (alle setzen voraus, dass Sie für die EC2-Instanz ein SSH durchgeführt haben).

  1. Aktualisieren Sie die Pakete auf Ihrer Instanz

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

  2. Installieren Sie Docker

    [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 der 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 dies zu erfordern sudo. Nachdem ich den 4. Befehl ausgeführt hatte, musste ich mich abmelden und wieder anmelden, damit die Änderung wirksam wurde.

Ajtrichards
quelle
3
Wie ich bereits in der Frage erwähnt habe, funktioniert dies zwar, installiert aber eine veraltete Version von Docker (noch Version 1.12.6 am 28.05.2017). Während ich selbst für meine EC2-Instanzen auf das Ubuntu-Image umgestiegen bin, wollte ich wissen, wie man eine der aktuellen Docker-Versionen auf einem AMI-Image installiert. Denn es gab (zumindest zum Zeitpunkt der Frage) keinen offensichtlichen Weg, um entweder eine aktuelle Docker CE- oder eine Docker EE-Installation zu erhalten. Darum ging es in erster Linie bei dieser Frage, und deshalb kann ich sie nicht ohne zu zögern annehmen. Trotzdem Danke!
mxscho
@mxscho ja das ist auch was ich suche, also warte bitte bis eine antwort auf die frage gepostet wird.
user239558
1
Heute installiert yum install 17.03.1ce-1.50.amzn1
raarts
1
Hat bei mir nicht funktioniert. Also musste ich das machen. sudo yum installiere yum-utils und dann sudo yum-config-manager - aktiviere rhui-REGION-rhel-server-extras und dann sudo yum installiere
docker
5

Der schwierigste Teil, um all dies herauszufinden, war die Container-Selinux-Anforderung. Suchen Sie einfach die neueste Version unter http://mirror.centos.org/centos/7/extras/x86_64/Packages/ und installieren Sie diese zuerst. Darüber hinaus verfügen EC2-Instanzen möglicherweise nicht über einen geeigneten Entropiegenerator und havegedmüssen möglicherweise installiert werden.

Der Rest stammt von https://docs.docker.com/install/linux/docker-ce/centos/, wobei Haveged und Firewalld hinzugefügt wurden. All dies muss als root so sudopassend gemacht werden.

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

Aktivieren Sie SELinux, indem Sie ändern /etc/sysconfig/selinux, um zu sein

SELINUX=enforcing
SELINUXTYPE=targeted

Starten Sie dann Ihre Instanz durch Ausgabe neu shutdown -r now

Die Ausführung sudo docker versionsollte ab dem Zeitpunkt dieser Buchung erfolgen ...

Klient:
 Version: 18.03.0-ce
 API-Version: 1.37
 Go-Version: go1.9.4
 Git-Commit: 0520e24
 Erbaut: Mi. 21. März 23:09:15 2018
 OS / Arch: Linux / AMD64
 Experimentell: falsch
 Orchestrator: Schwarm

Server:
 Motor:
  Version: 18.03.0-ce
  API-Version: 1.37 (Mindestversion 1.12)
  Go-Version: go1.9.4
  Git-Commit: 0520e24
  Erbaut: Mi 21. März 23:13:03 2018
  OS / Arch: Linux / AMD64
  Experimentell: falsch
Archimedes Trajano
quelle
1
Haben Sie versucht, Docker auf anderen AMIs als CentOS auszuführen? Können Sie Ihre Erfahrungen teilen?
Suncatcher
1
Ich habe das Centos Ami nicht benutzt. Ich habe das AMI Linux 2 benutzt. Das Linux 1 ist zu alt.
Archimedes Trajano
1
OK habe es. Sind die von Ihnen verwendeten CentOS-Repos vollständig mit Amazon AMI kompatibel?
Suncatcher
Richtig, ich benutze Centos VMs für die Entwicklung mit Vagrant. Ich musste nur meine Skripte anpassen, damit es mit fehlenden Paketen funktioniert.
Archimedes Trajano
1
Einfache Paranoia
Archimedes Trajano
2

Per 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 von Amazon Linux AMI
  • Die neueste Version des Amazon ECS-Container-Agenten (1.17.2)
  • Die empfohlene Docker-Version für den neuesten Amazon ECS-Container-Agenten (17.12.0-ce)
  • Die neueste Version des Pakets ecs-init zum Ausführen und Überwachen des Amazon ECS-Agenten (1.17.2-1)

Den Verlauf finden Sie unter https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html

Plutext
quelle
0

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 habe, und dem Ansatz, den ich derzeit mit dem terraform-Modul mache, besteht darin, die von AWS bereitgestellten Docker-Pakete zu verwenden. Dies beinhaltet nicht die vollständige Docker-Erstellung und was nicht, aber Sie benötigen diese Pakete normalerweise nicht auf einem Server.

Da ich die von Amazon bereitgestellte Version verwende, handelt es sich nicht mehr um die neueste Version 18.09, sondern um die Version 18.06. Die Einrichtung ist jedoch einfacher und ich muss mich nicht mit Container-Selinux auseinandersetzen.

Die einzige externe Abhängigkeit, die ich verwende, ist EPEL, um in Schwierigkeiten zu geraten, da Sie für einige Anwendungen immer noch eine gute Zufallsquelle 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.

Archimedes Trajano
quelle