Ulrichs Werkbank

Docker auf Core OS und VirtualBox 

20. November 2016
von Ulrich Hilger

 

Eine Nutzung von Programmen unabhängig von Gerät und System sowie ortsunabhängige Verwendung über ein Netzwerk zum Beispiel via Webbrowser lassen das Betriebssystem mehr und mehr in den Hintergrund treten.

Verteilte Anwendungsarchitekturen verlangen nach anderen Ansätzen für den Betrieb und die Bereitstellung von Software. Hier ist die Containerisierung mit Docker ein schnell wachsender Bereich.

Docker vereinfacht es, beispielsweise einen Apache Webserver nebst Datenbank herbeizuzaubern um darauf dann eine Webanwendung auszuführen. Die erforderliche Paketierung einmal erstellt gerät die Ausführung einer solchen Webanwendung anschließend zu einem einfachen docker run Kommando. 

Allerdings sollte die Laufzeitumgebung für Docker möglichst losgelöst von der Maschine existieren. Wird Docker direkt auf Windows, Linux oder einem Mac installiert, ist es erneut an die betreffende Maschine gebunden. Der Schlüssel zur Portabilität ist die Virtualisierung: Mit ihr ist es einerlei, welches System seine Ressourcen zur Ausführung von Software bereitstellt.

Dieser Beitrag beschreibt am Beispiel Core OS und VirtualBox, wie man ein auf das Wesentliche beschränktes Betriebssystem für die Ausführung von Programmen mit Docker schafft, das dank VirtualBox auf Windows, Linux und Mac gleichermaßen funktioniert.

Übersicht

Folgende Schritte sind erforderlich, um Docker auf Core OS und VirtualBox zur Ausführung zu bringen:

ISO-Datei laden
Gast in VirtualBox anlegen
Installationsabbild starten
Kommandozeile von Core OS verwenden
Benutzer für Core OS anlegen
Core OS installieren
Installation abschließen
Core OS starten
Core OS verwenden

Diese Schritte sind nachfolgend im Detail erklärt.

Die ISO-Datei laden

Core OS ist in einer Menge verschiedener Varianten erhältlich. Für unsere Zwecke wird die Ausführung als ISO-Datei benötigt, die im Augenblick auf der Webseite von Core OS auf der Seite booting with iso erhältlich ist. Dort verweist die Verknüpfung Download stable ISO direkt auf das Herunterladen der aktuellen Fassung. Ist die ISO-Datei heruntergeladen, wird im nächsten Schritt ein neuer Gast in VirtualBox erzeugt.

Einen neuen Gast in VirtualBox anlegen

Zur Anlage eines neuen Gastes wird VirtualBox zunächst gestartet und die Schaltfläche "Neu" betätigt. Es erscheint eine Abfolge von Dialogen, die wie folgt ausgefüllt werden:

foto foto

Als weitere Einstellung wird eine dynamisch wachsende Festplatte im Format Virtual Box Disk Image (.vdi) mit 8 GB Größe gewählt. VirtualBox erstellt hierfür eine Datei, die zunächst leer ist. Sie wächst im Verlauf der Nutzung nur so weit an, wie Daten auf der virtuellen Festplatte gespeichert werden. Sollte man im Verlauf der Nutzung an die Grenze der 8 GB stoßen, kann dieses Maß nachträglich erhöht werden.

foto foto foto foto

Zuletzt wird die ISO-Datei mit der Installationsroutine von Core OS in den neuen Gast eingelegt. Dazu den neu angelegten Gast auswählen und die Schaltfläche "Ändern" betätigen. In der Rubrik "Massenspeicher" die Schaltfläche "Optisches Laufwerk hinzufügen" betätigen, dann "Medium auswählen" und im Dateiauswahldialog die zuvor heruntergeladene ISO-Datei wählen.

foto foto

Nun kann der neue Gast zur Installation von Core OS verwendet werden.

Das Installationsabbild starten

Zur Installation von Core OS wird nun der Gast gestartet indem der Gast ausgewählt und die Schaltfläche "Starten" betätigt wird. Es dauert ein kleines Weilchen während dem ein neues Fenster mit einer Textkonsole geöffnet ist. Das Installationsabbild von Core OS fährt hoch und es erscheint eine Kommandozeile zur Eingabe von Befehlen.

foto

An dieser Stelle ist Core OS hochgefahren und der Benutzer core ist angemeldet. Core OS ist noch nicht im Gast installiert, es wurde nur von der ISO-Datei aus gestartet und ist nun bereit zur Installation. Als weitere Vorbereitung der Installation muss nun zunächst ein Benutzer konfiguriert werden, mit dem man sich nach erfolgter Installation an Core OS anmelden kann.

Verwendung der Kommandozeile von Core OS

Core OS wird über eine Kommandozeile bedient, Befehle werden über die Tastatur eingetippt wobei nur das englische Tastaturschema unterstützt wird. Nachfolgend einige Tasten, die bei einer deutschen Tastatur anders belegt sind:

engl. dt.
z y
y z
- ß
_ Umschalt-ß
: ö
& Umschalt-7
/ -
\ #
# Umschalt-3

Für die folgende Anlage von Benutzer und Kennwort müssen auf einer deutschen Tastatur die Tasten in der rechten Spalte betätigt werden, um das dem englischen Tastaturschema entsprechende Zeichen in der linken Spalte einzugeben.

Benutzer für Core OS anlegen

Core OS wird mit einer Beschreibung namens cloud-config konfiguriert. Diese wird in einer Cloud-Umgebung von einem virtuellen Gerät gelesen, das man zu diesem Zweck als config-drive einbindet. Für unsere Zwecke genügt allerdings das Erstellen einer Datei, die die erforderlichen Konfigurationseinstellungen enthält.

Kennwort erstellen

Als erstes wird hierzu ein Kennwort gewählt und mit Hilfe von OpenSSL dessen verschlüsselter Ausdruck ermittelt. Auf der Kommandozeile wird dazu der folgende Befehl eingegeben

sudo openssl passwd -1 > cloud-config

Daraufhin wird man aufgefordert ein Kennwort einzutippen und die Eingabe zu bestätigen, indem man es ein zweites Mal eintippt. Das auf diese Weise angegebene Kennwort wird als verschlüsselter Ausdruck in eine Datei namens cloud-config ausgegeben. Mit dem Kommando ls kann überprüft werden, ob die Datei erstellt wurde: Wenn ja, erscheint als Antwort die so benannte Datei.

Vorsicht: Das Kennwort, das man eintippt, wird verdeckt eingegeben, also nicht am Bildschirm angezeigt. Man bekommt nicht mit, wenn man eine Taste tippt, die wegen der unterschiedlichen Tastaturbelegung anders interpretiert wird.

cloud-config ergänzen

Zum Erstellen bzw. Ergänzen der im vorigen Schritt erstellten Datei cloud-config wird der Editor vim mit dem gleichnamigen Befehl auf der Kommandozeile gestartet.

vim cloud-config

Es erscheint ein Eingabefenster mit dem verschlüsselten Kennwort aus dem vorigen Schritt. Mit Umschalt-i gelangt man in den Einfügemodus, die Einfügemarke blinkt oben links. Nun wird der Inhalt von cloud-config eingetippt wie folgt

#cloud-config
users:
- name: ulrich
  passwd: $1$CJuqMvPp$.BPo2rU5Biw9gDFBxu3pW.
  groups:
  - sudo
  - docker

Mit der Escape-Taste beendet man den Eingabemodus. Anschließend wird das Kommando

:wq

gefolgt von der Return-Taste eingetippt woraufhin die Konfiguraion als Datei cloud-config gespeichert und der Editor vim beendet wird. Mit

cat cloud-config

wird der eingetippte Inhalt der Datei cloud-config zur Überprüfung ausgegeben. Wir sind bereit zur Installation von Core OS.

Core OS installieren

Zur Installation von Core OS wird das folgende Kommando gegeben

sudo coreos-install -d /dev/sda -C stable -c cloud-config

Die Installation läuft durch und endet mit der Mitteilung Success! CoreOS stable [Version] is installed on /dev/sda

foto

Core OS ist nun fertig installiert.

Installation beenden

Zum Beenden der Installation wird das System mit folgendem Befehl heruntergefahren

shutdown now

Das laufende Core OS wird heruntergefahren und das Fenster mit der Kommandozeile schließt sich. In VirtualBox kann man anschließend den CoreOS-Gast markieren und die Rubrik "Massenspeicher" aufsuchen. Dort entfernt man die ISO-Datei mit den Installationsdateien für Core OS. Der CoreOS-Gast ist nun bereit für den ersten Start.

Core OS starten

Zum Start des frisch installierten Core OS wird der Gast in VirtualBox markiert und die Schaltfläche "Starten" betätigt. Es öffnet sich ein neues Fenster in dem Nachrichten erscheinen, die den Startablauf von Core OS ausgeben. Der Start ist abgeschlossen, wenn die Anmeldeaufforderung erscheint. Dort werden Benutzername und Kennwort eingetragen, wie sie zuvor in der cloud-config angelegt wurden. Nach erfolgreicher Anmeldung erscheint die Eingabeaufforderung.

foto foto

An diesem Punkt hat man ein Linux mit Docker am Start, das virtualisiert in VirtualBox zur Verfügung steht. Diese Fassung wird am besten ohne weitere Änderung beendet und als Vorlage für Duplikate verwendet.

Core OS verwenden

Möchte man eine Instanz von Core OS erzeugen, die produktiv oder auch für Tests genutzt werden soll, wird der wie hier beschrieben erstellte Gast in VirtualBox gewählt und die rechte Maustaste betätigt. Aus dem Menü wird die Option "Klonen..." gewählt. Damit wird eine exaktes Abbild von Core OS als neuer Gast erstellt.

Dieses neu erstellte Abbild kann dann genutzt, beliebig erweitert und angepasst und nach der Nutzung wieder gelöscht werden.

Nützliche Anpassungen

Nach der Installation von Core OS liegt die zur Konfiguration verwendete Datei cloud-config unter

/var/lib/coreos-install/user_data

Mit der Anpassung der Datei user_data kann man so auch nach der Installation noch Einstellungen an Core OS hinterlegen. Ferner empfiehlt sich die Anlage eines Hostnamens wie z.B. coreos-test-1 in den Dateien

/etc/hosts
/etc/hostname

Auf diese Weise kann man einfacher die laufende Maschine über ssh oder PuTTY aufrufen und steuern.

Unabhängig vom Hostnamen hinterlegt man in VirtualBox unter Netzwerk > Erweitert eine Portweiterleitung namens ssh mit dem Host-Port 3022 und dem Gast-Port 22. Danach kann man die laufende virtuelle Maschine mit PuTTY erreichen, wenn man eine Verbindung zu localhost:3022 aufbaut oder mit ssh über 

ssh -l ulrich -p 3022 localhost

Die Steuerung gelingt dann auch von einer anderen Maschine aus, wobei u.U. die Angabe der IP-Adresse anstelle von localhost nötig ist.

Fazit

Während andere Betriebssysteme zwischen 2 und 4 GB und je nach installierter Software auch mehr 'auf die Waage' bringen, liefert Core OS eine vergleichsweise leichtgewichtige Variante, die erst einmal nur das Nötigste enthält und damit nur etwas mehr als 800 MB klein ist. Auf die beschriebene Weise mit VirtualBox aufgesetzt ist Core OS die ideale Grundlage für die verschiedensten Konfigurationen.

Da Core OS die Containerlösung Docker standardmäßig bereits mit an Bord hat, ist zugleich die Ausgangsbasis für die Installation einer Vielzahl fertiger Docker-Container geschaffen. Eigene Konfigurationen können wiederum als Docker-Container angelegt, betrieben und verteilt werden.

Dank Virtualisierung funktioniert das ohne Einfluss auf die Maschine, von der aus gearbeitet wird und ist skalierbar und portabel. Verteilte Anwendungslandschaften können so vom eigenen Rechner aus entworfen, erstellt und verteilt werden.

 

Verweise

Core OS ISO-Dokumentation
https://coreos.com/os/docs/latest/booting-with-iso.html

Direkter Download der aktuellen ISO-Datei mit Core OS
https://stable.release.core-os.net/amd64-usr/current/coreos_production_iso_image.iso

Beschreibung des cloud-config-Formates
https://coreos.com/os/docs/latest/cloud-config.html#configuration-file

Beschreibung der Verwendung von config-drive
https://coreos.com/os/docs/latest/cloud-config.html#providing-cloud-config-with-config-drive

Beschreibung des Editors vim auf Ubuntuusers.de
https://wiki.ubuntuusers.de/VIM/

VirtualBox
http://virtualbox.org

Docker
https://www.docker.com/

Getting started with Docker
https://coreos.com/os/docs/latest/getting-started-with-docker.html