© Excellent backgrounds/Shutterstock.com
Java Magazin
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.

Peter Roßbach, Sascha Möllering


Video: Micro Services - weder Micro noch Service? 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).Abb. 1: Schematische Systemarchitektur einer ECS-InstanzECS-SetupFür das initiale Setup für die Nutzung von ECS müssen einige Einstellungen vorgenommen werden. Besonders wichtig ist die Einrichtung einer IAM Policy, damit der Nutzer die Rechte hat, das ECS-Cluster zu verwalten. Das ECS-Setup wird unter [8] genauer beschrieben.aws ecs create-cluster --cluster-name DockerCluster#!/bin/bashecho ECS_CLUSTER=DockerCluster >> /etc/ecs/ecs.configAbb. 2: AWS Console: Anlegen einer EC2-Instanz für ECSaws ec2 run-instances --image-id ami-3b76114c --count 2 --instance-type t2.small --key-name --security-group-ids --subnet-id --user-data file:///path/to/user-data.sh --associate-public-ip-addressaws ecs list-container-instances --cluster DockerClusteraws ecs describe-container-instances --cluster DockerCluster --container-instances container_instance_UUIDEine simple Taskdefinition mit dem Namen sleep360.json kann dabei wie in Listing 1 aussehen.Listing 1{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360"}{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360"}Listing 2[ { "image": "my-registry:5000/java-service:latest", "name": "java-service", "cpu": 100, "memory": 500, "essential": true, "links": [ "db" ] ... }, { "image": "postgres", "name": "db", "cpu": 100, "memory": 500, "essential": true, "environment": [ { "name": "POSTGRES_PASSWORD", "value": "" ...

Java Magazin
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.

Peter Roßbach, Sascha Möllering


Video: Micro Services - weder Micro noch Service? 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).Abb. 1: Schematische Systemarchitektur einer ECS-InstanzECS-SetupFür das initiale Setup für die Nutzung von ECS müssen einige Einstellungen vorgenommen werden. Besonders wichtig ist die Einrichtung einer IAM Policy, damit der Nutzer die Rechte hat, das ECS-Cluster zu verwalten. Das ECS-Setup wird unter [8] genauer beschrieben.aws ecs create-cluster --cluster-name DockerCluster#!/bin/bashecho ECS_CLUSTER=DockerCluster >> /etc/ecs/ecs.configAbb. 2: AWS Console: Anlegen einer EC2-Instanz für ECSaws ec2 run-instances --image-id ami-3b76114c --count 2 --instance-type t2.small --key-name --security-group-ids --subnet-id --user-data file:///path/to/user-data.sh --associate-public-ip-addressaws ecs list-container-instances --cluster DockerClusteraws ecs describe-container-instances --cluster DockerCluster --container-instances container_instance_UUIDEine simple Taskdefinition mit dem Namen sleep360.json kann dabei wie in Listing 1 aussehen.Listing 1{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360"}{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360"}Listing 2[ { "image": "my-registry:5000/java-service:latest", "name": "java-service", "cpu": 100, "memory": 500, "essential": true, "links": [ "db" ] ... }, { "image": "postgres", "name": "db", "cpu": 100, "memory": 500, "essential": true, "environment": [ { "name": "POSTGRES_PASSWORD", "value": "" ...

Neugierig geworden?


    
Loading...

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