© Excellent backgrounds/Shutterstock.com
Kolumne: Docker rockt Java

Docker Multi-Host Networking


Ein fehlender Baustein im Docker-Ökosystem ist der einheitliche Multi-Host-Network-Support. Dafür gibt es bisher mehrere Lösungen, die sich mit sehr speziellen Werkzeugen und Erweiterungen in einem Host integrieren lassen. Die Integration des Projekts libnetwork in die Docker Engine soll nun eine einheitliche und transparente Netzwerknutzung für Container realisieren.

Auf der DockerCon 2015 in San Francisco wurde der Docker-Network-Multi-Host-Support erstmalig vorgestellt. Die Docker-Version 1.7 basiert nun komplett auf dem Projekt libnetwork [1]. In der Docker Engine ist der gewohnte Linux-Bridge-Support [2], [3], [4] verfügbar. Mit dem Release 1.9 ist der Multi-Host-Support nun offiziell verfügbar. Diese Kolumne beruht auf dem Experimental-1.9-Release, das nun täglich aktuell verfügbar ist.

Ein Ziel des Multi-Host-Supports ist es, Containern auf verschiedenen Hosts zu ermöglichen, miteinander zu kommunizieren. Weiterhin wird eine Isolierung der Netzwerke von Containergruppen realisiert. Jeder Container kann nun gleichzeitig an verschiedene Netzwerke angebunden werden. Die Technologie zur Realisierung der Netzwerkkommunikation kann ausgetauscht und erweitert werden. Das Konzept der Docker-Links wird durch ein neues Servicekonzept ergänzt. Ein Service wird zur Laufzeit an einen Container und ein Netzwerk gebunden. Der Service wird durch einen Namen und die Bereitstellung verschiedener Ports definiert. Um die Informationen von Netzwerken und Services zwischen den Docker-Hosts zu koordinieren, werden diese in einem Key Value Store, bzw. Service Discovery wie Consul, Etcd oder ZooKeeper bereitgestellt (Abb. 1).

rossbach_docker_1.tif_fmt1.jpgAbb. 1: Docker-Multi-Host-Network-Architektur

Die Aufzählung dieser neuen Eigenschaften ist beeindruckend. Im Folgenden wird beschrieben, welche Schritte praktisch erfolgen müssen, um den Multi-Host-Network-Support auf dem eigenen Notebook zu testen [5], [6], [7].

boot2docker-Network-Experiment

Als erster Schritt müssen verschiedene Hosts mit der Docker Machine erzeugt werden [8]. Damit die neuesten Eigenschaften der Docker Engine auch auf der Basis von boot2docker bereitstehen, muss ein boot2docker-Image auf der Basis des Docker-Experimental-Release erzeugt werden. Natürlich existiert schon ein entsprechender boot2docker-Build-Container, und der Austausch des Docker-Release ist entsprechend einfach [9], (Listing 1). Mit dem hier verwendeten boot2docker-Build-Container lassen sich sehr schön erweiterte Projekt-Images für ein oder mehrere Teams bereit...

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