webentwicklung-frage-antwort-db.com.de

Unterschied zwischen Docker und AMI

Im Zusammenhang mit AWS:

AMI wird zum Paketieren von Software verwendet und kann auf EC2 bereitgestellt werden . Docker kann auch zum Packen von Software verwendet werden und kann auch auf EC2 bereitgestellt werden.

Was ist der Unterschied zwischen beiden und wie wähle ich zwischen ihnen?

19
Schleir

Ein AMI ist ein Bild. Dies ist eine ganze Maschine, von der aus Sie neue Instanzen starten können. Ein Docker-Container ist leichter und tragbarer. Ein Docker-Container sollte zwischen Anbietern transportierbar sein, während ein AMI nicht (leicht) ist.

AMIs sind im Wesentlichen VM - Abbilder . Docker-Container sind gepackte Mini-Abbilder, die auf einigen VM in einer isolierten Umgebung ausgeführt werden. 

18
Jerry Vines

Dieser Link enthält Details zu den Unterschieden zwischen Docker und AMI: - https://forums.docker.com/t/how-would-you-differentiate-between-docker-vs-ec2-image/1235/2

4
Vinay

Dies beantwortet die Frage zwar nicht direkt, gibt jedoch einen Hintergrund zu ihrer Verwendung. 

Ein Ansatz besteht darin, EC2-Instanzen mit Amazon AMI (oder einem beliebigen AMI) zu starten und dann Docker-Container (mit allen Abhängigkeiten) darüber auszuführen. Bei diesem Ansatz wird das Docker-Image mit der Zeit aufgebläht und es kommt zu einer Container-Drift. Außerdem dauert es länger, bis die Anwendung läuft, da das Ec2 gestartet werden muss und das Andockgerät den App-Server hochfahren muss.

Ein anderer Ansatz ist "unveränderliche Ec2-Instanzen". Bei diesem Ansatz verwenden Sie Amazon AMI als Basis und installieren alle Abhängigkeiten (verwenden Sie Shell-Skripts oder Ansible), und backen Sie sie in der AMI. Wir verwenden Hashicorp Packer, ein erstaunliches Werkzeug. Hier wird die Zeit, die die Anwendung läuft, erheblich reduziert, da alle Abhängigkeiten (Java8, Tomcat, Kriegsdatei usw.) bereits in der AMI installiert sind.

Verwenden Sie für den Produktionsanwendungsfall Packer zum Erstellen von AMI und Terraform zum Starten von Cloud-Ressourcen zur Verwendung dieses AMI. Binden Sie all dies in der Jenkins-Pipeline zusammen. 

0
VimalKumar