Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bewährte Methoden für Amazon ECS-Container-Images
Ein Container-Image besteht aus einer Reihe von Anweisungen zum Erstellen des Containers. Ein Container-Image enthält Ihren Anwendungscode und alle Abhängigkeiten, die Ihr Anwendungscode zur Ausführung benötigt. Zu den Anwendungsabhängigkeiten gehören die Quellcodepakete, auf denen Ihr Anwendungscode basiert sowie eine Sprachlaufzeit für interpretierte Sprachen und Binärpakete, auf denen Ihr dynamisch verlinkter Code basiert.
Beachten Sie beim Entwerfen und Erstellen Ihrer Container-Images die folgenden Richtlinien:
-
Vervollständigen Sie Ihre Container-Images, indem Sie alle Anwendungsabhängigkeiten als statische Dateien im Container-Image speichern.
Wenn Sie etwas am Container-Image ändern, erstellen Sie mit den Änderungen ein neues Container-Image.
-
Führen Sie einen einzelnen Anwendungsprozess in einem Container aus.
Die Lebensdauer des Containers ist so lang, wie der Anwendungsprozess läuft. Amazon ECS ersetzt abgestürzte Prozesse und bestimmt, wo der Ersatzprozess gestartet werden soll. Ein vollständiges Image macht die gesamte Bereitstellung robuster.
-
Sorgen Sie dafür, dass Ihre Anwendung funktioniert
SIGTERM
.Wenn Amazon ECS eine Aufgabe stoppt, sendet es zunächst ein SIGTERM-Signal an die Aufgabe, um die Anwendung darüber zu informieren, dass sie beendet und heruntergefahren werden muss. Amazon ECS sendet dann eine
SIGKILL
Nachricht. Wenn Anwendungen das ignorierenSIGTERM
, muss der Amazon ECS-Service warten, bis dasSIGKILL
Signal gesendet wird, um den Prozess zu beenden.Sie müssen ermitteln, wie lange es dauert, bis Ihre Anwendung ihre Arbeit abgeschlossen hat, und sicherstellen, dass Ihre Anwendungen das
SIGTERM
Signal verarbeiten. Die Signalverarbeitung der Anwendung muss verhindern, dass die Anwendung neue Aufgaben annimmt und die laufende Arbeit abschließt, oder unerledigte Arbeiten außerhalb der Aufgabe speichern, wenn die Arbeit zu lange dauert. -
Konfigurieren Sie containerisierte Anwendungen so, dass sie Protokolle in
stdout
undstderr
schreiben.Durch die Entkopplung der Protokollverarbeitung von Ihrem Anwendungscode können Sie die Protokollverarbeitung flexibel auf Infrastrukturebene anpassen. Ein Beispiel hierfür ist die Änderung Ihres Protokollierungssystems. Anstatt Ihre Dienste zu ändern und ein neues Container-Image zu erstellen und bereitzustellen, können Sie die Einstellungen anpassen.
-
Verwenden Sie Tags, um Ihre Container-Images zu versionieren.
Container-Images werden in einer Container-Registrierung gespeichert. Jedes Image in einer Registrierung wird durch ein Tag identifiziert. Es gibt ein Tag namens
latest
. Dieses Tag dient als Hinweis auf die neueste Version des Anwendungs-Container-Images, ähnlich wieHEAD
in einem Git-Repository. Wir empfehlen, dass Sie daslatest
-Tag nur für Tests verwenden. Es hat sich bewährt, Container-Images mit einem eindeutigen Tag für jeden Build zu kennzeichnen. Wir empfehlen, dass Sie Ihre Images mit dem git-SHA für den Git-Commit taggen, der zum Erstellen des Images verwendet wurde.Sie müssen nicht für jeden Commit ein Container-Image erstellen. Wir empfehlen jedoch, dass Sie jedes Mal, wenn Sie einen bestimmten Code-Commit für die Produktionsumgebung veröffentlichen, ein neues Container-Image erstellen. Wir empfehlen außerdem, das Image mit einem Tag zu versehen, das dem git-Commit des Codes entspricht, der sich im Image befindet. Wenn Sie das Image mit dem Tag des git-Commits versehen, können Sie schneller herausfinden, welche Version des Codes auf dem Image ausgeführt wird.
Wir empfehlen außerdem, dass Sie unveränderliche Image-Tags in der Amazon Elastic Container Registry aktivieren. Mit dieser Einstellung können Sie das Container-Image, auf das ein Tag verweist, nicht ändern. Stattdessen erzwingt Amazon ECR, dass ein neues Bild in ein neues Tag hochgeladen werden muss. Weitere Informationen finden Sie unter Veränderlichkeit von Image-Tags im Amazon-ECR-Benutzerhandbuch.
Wenn Sie Ihre Anwendung für die Ausführung entwerfen AWS Fargate, müssen Sie entscheiden, ob Sie mehrere Container in derselben Aufgabendefinition bereitstellen oder Container separat in mehreren Aufgabendefinitionen bereitstellen möchten. Wenn die folgenden Bedingungen erforderlich sind, wird empfohlen, mehrere Container in derselben Aufgabendefinition bereitzustellen:
-
Ihre Container haben einen gemeinsamen Lebenszyklus (d. h. sie werden gemeinsam gestartet und beendet).
-
Ihre Container müssen auf demselben zugrunde liegenden Host ausgeführt werden (d. h. ein Container verweist auf den anderen auf einem localhost-Port).
-
Ihre Container teilen sich Ressourcen.
-
Ihre Container nutzen Daten-Volumes gemeinsam.
Wenn diese Bedingungen nicht erforderlich sind, empfehlen wir, Container separat in mehreren Aufgabendefinitionen bereitzustellen. Auf diese Weise können Sie die Container separat skalieren, bereitstellen und deprovisionieren.