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 Ablaufumgebung 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.
Folgende Schritte sind erforderlich, um Docker auf Core OS und VirtualBox zur Ausführung zu bringen:
Installationsabbild 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.
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.
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:
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.
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.
Nun kann der neue Gast zur Installation von Core OS verwendet werden.
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.
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.
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.
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.
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.
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.
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
Core OS ist nun fertig installiert.
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.
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.
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.
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.
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.
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.
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