Docker – First Steps Tutorial

Docker-VMwareDocker ist eine Open-Source-Software, die beim Linux-Betriebssystem dazu verwendet werden kann, Anwendungen mithilfe von Betriebssystemvirtualisierung in Containern zu isolieren. Dies vereinfacht einerseits die Bereitstellung von Anwendungen, weil sich Container, die alle nötigen Pakete enthalten, leicht als Dateien transportieren und installieren lassen. Andererseits gewährleisten Container die Trennung der auf einem Rechner genutzten Ressourcen, sodass ein Container keinen Zugriff auf Ressourcen anderer Container hat (Quelle: Wikipedia). Beginnen wir mit der Installation der aktuellen Docker Version:

Key importieren:
 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Repository erweitern:
 sudo sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list"

Docker installieren:
 apt-get update
 apt-get install lxc-docker

Docker starten:
 service docker status
 service docker start

Apparmor muss installiert sein!
 apt-get install apparmor

Den ersten Container erzeugen wir, in dem wir eine BASH im Container starten:

docker run -t -i ubuntu /bin/bash

Da das Image von Ubuntu noch nicht vorhanden ist, wird dieses per PULL von Docker.io gezogen und anschließend durch die Parameter -i und -t eine Shell geöffnet. In dieser Shell installieren wir nun per APT-GET den Apache2 Webserver:

apt-get update
apt-get install apache2

Diese jetzt getätigten Änderungen müssen in das Baseimage gesichert werden durch einen Commit. Ich Vergleiche hier Docker gerne mit Subversion für das Betriebssystem 😉 Den letzten laufenden Container kann man sich mit docker ps -l anzeigen lassen. Diese ID commited man nun und erzeugt so sein eigenes Image:

docker ps -l
 CONTAINER ID        IMAGE                   COMMAND                CREATED             STATUS              PORTS                NAMES
 28b692953462        ubuntu:latest   "/bin/bash   4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp   prickly_kowalevski

docker commit <ID> <Imagename>
docker commit 28b692953462 mklehr/apache2
 oder
docker commit prickly_kowalevski mklehr/apache2

Die installierte Software (Apache2) in dem jetzt erzeugten Image kann man nun starten:

docker run -d -p 80:80 --name test1234 mklehr/apache2 /usr/sbin/apache2ctl -D FOREGROUND

Die Besonderheit: Apache2 kann nicht über das Startscript in /etc/init.d ausgeführt werden, sondern nur über apache2ctl. Stopt man nun diesen Container, sind die erzeugten Daten (z.B. von WordPress) im /var/www Ordner weg. Damit das nicht passiert, kann man in Docker „Volumes“ einbinden, die solche Änderungen lokal im System speichern. Dazu erzeugen wir einen Ordner im Filesystem der über docker run in den Container „gemounted“ wird.

mkdir /datastore/var-www
docker run -d -p 80:80 -v /datastore/var-www:/var/www/html mklehr/apache2 /usr/sbin/apache2ctl -D FOREGROUND

Zur Überprüfung, ob der lokale Ordner auch genutzt wird, legen wir im lokalen Speicher eine „index.html“ ab. Diese sollte dann bei einem Seitenaufruf angezeigt werden.

docker-datastore

Wenn unser Container zufriedenstellend läuft, kann man ihn ex- und auf einem anderen System importieren. Unabhängig von dem genutzten Linux auf dem Host!

docker save mklehr/apache2 > /root/mklehr-apache2.tar
docker load < /root/mklehr-apache2.tar

Hier noch ein interessanter Link zu einem Artikel in den VMware Blogs zu Docker. Für die ersten Schritte empfehle ich das wirklich gut gemachte online Tutorial auf der Webseite von Docker.

Schreibe einen Kommentar