Im Gegensatz zu virtuellen Maschinen setzt Docker bei der Virtualisierung nicht auf der Hardwareebene sondern auf der Betriebssystemebene an. Diese Technik erlaubt es eine virtuelle Umgebung in kürzester Zeit zu starten und dabei den Arbeitsspeicher zu schonen. In diesem Artikel werden erste Schritte mit Docker erläutert.
Virtualisierung auf der Betriebssystemebene wird bereits seit Jahrzehnten eingesetzt. Auch für Linux existieren bereits unterschiedlichste Lösungen wie zum Beispiel OpenVZ oder Linux Container (LXC). Bereits 2008 hatte ich mehrere Server mit OpenVZ produktiv im Einsatz, doch leider war Wartungsaufwand höher als bei anderen virtuellen Maschinen. Dies soll sich mit dem noch relativ jungen Projekt Docker (erste Version 2013 veröffentlicht) ändern, denn es bietet nicht nur eine relativ einfaches Kommandozeilentool sondern es existiert auch zentrales Repository für Images.
Installation
Viele Linux Distributionen werden bereits mit fertige Paketen zur schnellen und einfache Installation ausgeliefert. Unter Arch Linux könnte die Installation wie folgt aussehen.
$ sudo pacman -S docker
$ sudo systemctl enable docker
$ sudo systemctl start docker
Ähnlich gestaltet es sich unter Ubuntu 14.04. Hier sind folgende Schritte durchzuführen.
$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo service docker.io restart
Die Installation von Docker unter anderen Linux Distributionen kann der offiziellen Docker Dokumentation entnommen werden.
Meist muss der docker-Daemon mit root-Rechten angesprochen werden. Es gibt jedoch auch die Möglichkeit ohne root-Rechte darauf zuzugreifen. Dazu muss der gewünschte Benutzer in die docker-Gruppe aufgenommen werden. Dies ist jedoch mit großer Vorsicht zu betrachten. Weitere Informationen, Hinweise und mögliche Angriffsszenarien könne die Docker Security Dokumentation entnommen werden.
Erster Test
Welche Betriebssysteme und Anwendungen schon als Docker-Container existieren kann über die Webseite des Docker Hub oder mit folgendem Befehl in Erfahrung gebracht werden. Je nach eingegeben Suchbegriff ist die Liste sehr lang.
$ sudo docker search ubuntu
Soll zum Beispiel Ubuntu als Grundsystem in Docker zum Einsatz kommen, muss zunächst das entsprechende Image heruntergeladen werden. Mit dem folgenden Befehl wird dies für Ubuntu 14.04 gemacht. Je nach Netzwerkanbindung kann dieser Vorgang beim ersten Mal etwas länger dauern.
$ sudo docker pull ubuntu:14.04
Anschließend kann eine Anwendung in einem neuen Ubuntu 14.04 Container gestartet werden. Im Folgenden sind zwei Beispiel aufgeführt.
$ sudo docker run ubuntu:14.04 cat /etc/apt/sources.list
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
[...]
$ sudo docker run ubuntu:14.04 echo "test"
test
Es ist auch möglich eine Interaktive Shell in einem Container zu benutzen. Dies wird mit dem folgenden Befehl erreicht.
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
root@d129b4e1020f:/#
Dockerfile
Dockerfiles bieten eine einfache Möglichkeit Docker-Images schnell zu erstellen. Dazu muss zunächst die folgende Konfiguration in einer Datei mit dem Namen Dockerfile gespeichert werden.
FROM ubuntu:14.04
MAINTAINER Example <example@example.org>
RUN apt-get update && apt-get install -y python
Anschließend wird mit dem folgenden Befehl das Image mit dem Namen python-test erstellt.
$ sudo docker build -t python-test .
Dieses Image befindet sich dann in der Liste der verfügbaren Images ...
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
python-test latest 63a3e0ebf26f 2 minutes ago 241.8 MB
[...]
... und kann wie gewohnt verwendet werden.
$ sudo docker run -t -i python-test python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Fazit
Docker bietet wesentlich mehr Funktionen als in diesem Artikel gezeigt werden konnte. Ein Blick in die offizielle Docker Dokumentation ist daher sehr empfehlenswert.
Docker kann nicht nur für Entwickler sondern auch für Administratoren eine große Erleichterung sein. Es können Testumgebungen ohne großen Aufwand und sehr schnell gestartet und anschließend wieder gelöscht werden. Auch im Bereich Continuous Integration kann Docker zum Einsatz kommen.
Im Moment arbeiten verschiedene Firmen, Distributoren und Teams an Programmen für die Administration von großen Docker-Installationen. Doch erst die Zeit wird zeigen, welche Lösung(en) sich durchsetzt und am Markt etabliert.
Links
- Webseite: Docker Dokumentation (englisch)
- Webseite: Docker Security Dokumentation (englisch)
- Webseite: Docker Hub (englisch)