Multi-Tier-Applikationen mit Docker Compose, Machine und Swarm

Seite 2: Docker Machine

Inhaltsverzeichnis

Das Docker-Team stellt Docker Machine als statisch gelinktes Binary für verschiedene Linux-Architekturen, OS X und 32/64-Bit-Windows direkt auf der GitHub-Projektseite zur Verfügung. Die Binaries zu Version 0.5.0 finden sich beispielsweise auf GitHub.

Der Befehl docker-machine create erzeugt einen neuen Docker-Host. Für das Erstellen eines neuen virtuellen oder die Konfiguration eines bestehenden Systems greift Docker Machine auf sogenannte Treiber zurück. Diese Treiber gibt es für eine Vielzahl populärer Virtualisierungsangebote und Cloud-Anbieter. In diesem Artikel werden Virtualbox, DigitalOcean und die Verwaltung eines bereits existierenden Systems betrachtet.

Die Architektur von Docker Machine (Abb. 1)

Für Testzwecke auf der lokalen Arbeitsstation bietet sich VirtualBox an. Der Befehl docker-machine create -d virtualbox vb-test1 weist Docker Machine an, über den Treiber VirtualBox eine neue Maschine mit dem Namen "vb-test1" zu erzeugen. Dazu lädt das System das aktuelle ISO-Image für die Distribution boot2docker von der Projektseite herunter, definiert und startet die virtuelle Maschine in VirtualBox, erzeugt SSL-Zertifikate und nimmt die SSH-Konfiguration vor. Danach steht die Maschine zur Verbindung bereit. Je nach Treiber sind die Einstellungen für das Erzeugung des Docker Host mehr oder weniger detailliert. Anwender von VirtualBox können unter anderem den Arbeitsspeicher, die Anzahl der vCPUS und das Netzwerk für die VM anpassen. docker-machine create --help gibt alle gültigen Parameter für die eingebauten Treiber aus.

Bevor der Anwender den neuen Docker Host benutzen kann, muss er den lokalen Docker-Client umkonfigurieren. Das Kommando docker-machine env $Maschinenname hilft beim Setzen der benötigten Umgebungsvariablen. Hier ist je nach Shell eine andere Syntax notwendig. Im Beispiel kommt ein aktuelles Linux mit der Bash-Shell zum Einsatz. Wenn der Schritt erfolgreich vollzogen ist, kann der Nutzer wie gewohnt mit dem Kommandozeilenprogramm docker auf der entfernten Maschine arbeiten. Das erste Beispiel zeigt den Ablauf in der Shell.

Die Bereitstellung eines Docker-Hosts bei einem Cloud-Hoster wie DigitalOcean ist ähnlich einfach. Dafür müssen Anwender allerdings noch weitere Parameter wie das API-Token für DigitalOcean angeben. Alternativ können sie ihn wie viele andere Parameter auch in einer Umgebungsvariable setzen. Das ist vor allem bei sensiblen Daten wie Tokens empfehlenswert. In Beispiel 3 wird noch die Region Amsterdam 3 ausgewählt, in der das Droplet (DigitalOceans Umschreibung für VM) aufgesetzt werden soll. DigitalOcean und andere Cloud-Hoster nutzen standardmäßig Ubuntu als Basisdistribution für die VM. Der Support für Debian und Enterprise Linux ist aktuell noch als experimentell gekennzeichnet.

Das Tool docker-machine erlaubt mit dem sogenannten Generic-Treiber auch die Konfiguration bestehender Maschinen als Docker Host. Dazu müssen die Benutzer die IP-Adresse und SSH-Konfiguration wie Port, Username und Authentifizierungsschlüssel angeben. Eine Anmeldung via Passwort kennt das Werkzeug nicht. Beim generischen Treiber gelten aktuell die gleichen Einschränkungen bezüglich des Betriebssystems wie bei Cloud-Hostern. In Beispiel 4 wird ein entferntes System mit Ubuntu 14.04 x86_64 genutzt. Nach der erfolgreichen Konfiguration durch docker-machine wird das offizielle Image von nginx genutzt, um einen Webserver bereitzustellen.

docker-machine ist selbst im aktuellen Betastadium sehr praktisch und vor allem leicht zu erlernen. Die große Auswahl an Treibern ermöglicht die Nutzung auch in bestehenden Infrastrukturen. Dennoch sollte erwähnt werden, dass Docker von der Nutzung in Produktivumgebungen zurzeit noch abrät.