© Excellent backgrounds/Shutterstock.com
Kolumne: Docker rockt

JavaEC2 Container Service mit AWS


Bis vor Kurzem mussten Entwickler noch selbst Docker auf ihren EC2-Instanzen in Amazon Web Services installieren und das Management der Container vollständig selbst übernehmen. Mit der Einführung der Unterstützung von Docker in Elastic Beanstalk [1] und OpsWorks [2] wurde der Aufwand für die Nutzung von Containern bereits reduziert. Auf der Konferenz „AWS re:Invent 2014“ hat Amazon den neuen EC2 Container Service vorgestellt [3], der die Hürde für das Betreiben von Software in Docker-Containern noch einmal signifikant senkt.

Video: Micro Services - weder Micro noch Service?

Mit dem EC2 Container Service (ECS) von Amazon können verteilte Anwendungen in Containern auf einem Cluster von EC2-Instanzen betrieben werden. Der Cluster wird dabei vollständig von Amazon verwaltet. Durch die Konfiguration von Speicher- und CPU-Verbrauch werden die Container innerhalb des Clusters automatisch verteilt und platziert, je nachdem wo die entsprechenden Ressourcen gerade zur Verfügung stehen. Die Sicherheit innerhalb des eigenen Clusters ist gewährleistet, da eigene EC2-Instanzen gestartet werden. Kunden teilen sich also keine EC2-Instanzen. Darüber hinaus wird der Cluster innerhalb eines eigenen privaten Netzwerks (VPCs) gestartet und bietet somit einen hohen Isolierungsgrad, der über EC2 Security Groups und Network ACLs selbst verwaltet wird. Im Kontext von ECS ist ein Cluster eine logische Gruppierung von Containerinstanzen, auf denen Tasks ausgeführt werden können. Eine Containerinstanz ist eine vollständige EC2-Instanz, auf der Docker (in der Version 1.5) und der ECS-Agent, natürlich in einem eigenen Docker-Container, laufen. Der ECS-Agent ist in Go implementiert und liegt als Open-Source-Software unter der Apache-2-Lizenz vor [4].

Jede EC2-Instanz wird in einem Cluster registriert. Um eine Anwendung auf dem Cluster laufen zu lassen, ist eine Taskdefinition notwendig, die eine Anwendung beschreibt, welche eine oder mehrere Container­definitionen enthält. Diese Definition wird mithilfe einer JSON-Datei spezifiziert. Die Instanziierung einer Taskdefinition wird Task genannt. Als Container wird ein Docker-Container bezeichnet, der als Teil einer Taskdefinition erzeugt wurde. Der ECS-Scheduler plant, welche Instanz die Task ausführt. Der ECS-Agent liefert den eigenen Status und setzt den Taskplan dann lokal über den Docker Daemon um (Abb. 1).

sm_docker_kolumne_ecs_1.tif_fmt1.jpgAbb. 1: Schematische Systemarchitektur einer ECS-Instanz

Erzeugung eines ECS-Clusters

Im folgenden Abschnitt wird beispielhaft...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang