c't 26/2018
S. 148
Praxis
Docker-Compose
Aufmacherbild

Container-Komponist

Docker-Container mit Docker-Compose einrichten

Docker-Compose erleichtert den Umgang mit komplexen Container-Umgebungen, die zusammenarbeiten sollen. Entwicklern und Administratoren nimmt das Werkzeug viel Arbeit ab und schafft eine Infrastruktur, die überall gleich funktioniert.

Hat man ein passendes, gutes und sicheres Container-Image für ein Problem gefunden [1], ist der Container mit Docker schnell gestartet: Mit docker run <Name des Images> beginnt der Docker-Daemon, das Abbild aus der Registry zu beschaffen und startet den Container. Mit allerlei Parametern kann man den Container jetzt nach eigenen Wünschen anpassen und zum Beispiel einen Namen vergeben, ein Volume anhängen oder einen Port des Containers auf dem Rechner verfügbar machen. Leider ergibt das schon bei einfachen Aufgaben wie einem Webserver, der statische Inhalte ausliefern soll, einen langen und schlecht lesbaren Befehl. Arbeiten mehrere Container zusammen, die aufeinander angewiesen sind, ist eine Sammlung von Zeilen mit docker run nicht mehr praktikabel.

Mit Docker-Compose definieren Sie in einer Yaml-Datei, welche Container zusammenarbeiten sollen, wie sie heißen, welche Images sie verwenden und wie sie miteinander kommunizieren dürfen. Mit dem Befehl docker-compose up fährt die Komposition dann hoch – auf dem heimischen Entwicklungs-PC genauso wie auf dem Root-Server.

Kommentare lesen (4 Beiträge)

Ergänzungen & Berichtigungen

Container-Namen unter docker-compose 1.23.2

Der Artikel beschreibt die die Situation mit Docker-Compose 1.23.1. Während die Ausgabe gedruckt wurde, haben die Entwickler eine neue Version veröffentlicht. Docker-Compose 1.23.2 nimmt die Änderung zurück, die Zufallszeichen ans Ende des Containernamens gehängt hat. Grund war vermutlich die heftige Kritik, die in einem GitHub-Issue geäußert wurde.

Die erneute Änderung gilt für den Start mit docker-compose up. Startet man mit docker-compose run einen temporären Container, bekommt er eine Zufallskette ans Ende des Namens.