c't 15/2017
S. 116
Praxis
Docker: User Defined Networks
Aufmacherbild

Besser handgeknüpft

Container komfortabel vernetzt: User Defined Networks

Wurden Webserver und Datenbank in bester Docker-Manier in jeweils eigene Container verfrachtet, muss der Webserver neue Wege finden, auf die Datenbank zuzugreifen. Früher wurden solche Container miteinander verlinkt, doch diese Methode ist veraltet und soll bald entfernt werden. Die Zukunft gehört den User Defined Networks mit Embedded DNS-Server inklusive Namensauflösung für Container.

Für jeden Dienst einen eigenen Container, so könnte man die Docker-Doktrin kurz zusammenfassen. Nimmt man sie ernst, zerfällt ein traditioneller LAMP-Server mit Linux, Apache, MySQL und PHP in mindestens einen Webserver- und einen eigenen Datenbank-Container – mancher lagert sogar noch PHP in einen eigenen Container aus. Doch der gewünschte Effekt, dass die Dienste unabhängig voneinander arbeiten, hat auch Nebenwirkungen: Es müssen Kommunikationskanäle konfiguriert werden.

Beim traditionellen monolithischen LAMP-Server ist die Konfiguration trivial, Webserver und MySQL-Datenbank laufen auf demselben Host und tauschen ihre Daten lokal über das Loopback-Interface oder einen Socket aus. In Docker-Container aufgeteilt handelt es sich nun voneinander getrennte Prozesse mit eigenem Prozessraum und eigener IP-Adresse, die weiterhin miteinander kommunizieren müssen. Als Beispiel dient ein Webserver mit PHPMyAdmin als Datenbank-Frontend und abgetrennter MySQL-Datenbank. Beides gibt es als fertige Container-Images im Docker Hub.