blog.atwork.at

news and know-how about microsoft, technology, cloud and more.

Erste Schritte mit Docker-Teil 2

Docker ist eine Applikationsplattform, die (bald) auch unter Windows verwendet werden kann. Wie in Teil 1 beschrieben besteht Docker aus mehreren Komponenten. Um die Anwendung von Docker zu erlernen und die Funktionen anzusehen, ist es am einfachsten, das Online-Tutorial durchzugehen. Wie Docker funktioniert seht ihr nun hier in Teil 2.

Try it

Auf https://docker.com/tryit/ kann die Basisfunktionalität von Docker gleich ausprobiert werden.

image[12]

Das Tutorial dauert etwa 10 Minuten und zeigt, wie man ein Image aus der Docker Hub Registry lädt (download) und startet. Danach wird ein zusätzliches Utility in den Container installiert, getestet und die Änderungen in ein neues Image in die Docker Hub Registry gespeichert, damit andere Benutzer dieses verwenden können.

Wer das Tutorial durchmachen möchte, kann dies online tun, oder hier die Zusammenfassung nachlesen.

Erste Schritte mit Docker

Mit dem Command docker folgt eine Liste der Befehle, docker version zeigt die aktuelle Version. Aktuell sind Client und Server 0.5.3. (Grafiken zum Vergrößern anklicken.)

image_thumb[9]

Container Images sind n der Docker Hub Registry, einer Sammlung von Apps in der Cloud, gespeichert und können einfach heruntergeladen werden. Mit docker search tutorial wird die Docker Hub Registry nach Images mit dem Namen "Tutorial" durchsucht:

image_thumb[12]

Container Images können mit docker pull geladen werden. Für Images aus der Docker Hub Registry wird der Name durch "<username>/<repository>" zusammengestellt. Der Emulator läuft unter dem User "learn". Somit laden wir das Image mit Username und Imagename: learn/tutorial

docker pull learn/tutorial

image_thumb[16]

Docker hat das Image nun in den lokalen Host geladen (downgeloadet). Ein Image kann dabei aus mehreren "Layers" bestehen (s.o.) - die meisten Docker Images verwenden mehrere Layers

Nun muss der Prozess im Image gestartet werden. Das Kommando docker run benötigt mindestens zwei Parameter: a) einen Image-Namen und b) das Command, das innerhalb des Images ausgeführt werden soll:
docker run learn/tutorial echo "hello world"

image_thumb[19]

Voila. App gestartet (und wieder beendet).

More Docker

Zusätzlich kann der Container erweitert werden, in den Container kann etwa ein einfaches Ping-Utility installiert werden. Nachdem das Image auf Ubuntu läuft, funktioniert das Installieren mit dem wunderschönen Command apt-get install -y ping . Der Container läuft übrigens nicht mehr. Der Schalter -y steht für die noninteractive-mode Installation, keine Rückfragen bitte, einfach installieren.

Der Befehl zur Installation in den Container lautet dann so:
docker run learn/tutorial apt-get install -y ping

image_thumb[25]

Damit wurden ein Program "on top" des Base Images installiert. Die Änderungen im FileSystem des Containers bleiben persistent, jedoch sind sie noch nicht gespeichert.

Nachdem wir nun ein Command im Container ausgeführt haben, müssen die Änderungen nun gespeichert werden (commit). Damit kann später von diesem Punkt weg gestartet werden. Commit speichert die Änderungen zwischen dem alten und dem neuen Stand.

Zunächst muss die ID des Containers mit docker ps -l abgefragt werden, wo wir das neue Package (Ping-Utility) installiert haben.

image_thumb[28]

In diesem Beispiel lautet die ID 6982a9948422. Nun kann das Commit durchgeführt werden.

docker commit 6982a9948422 learn/ping

Hinweis: Für mich etwas kurios, aber es muss nicht die ganze ID angegeben werden, es genügen die ersten 3-4 Stellen der ID. So funktioniert es auch: docker commit 698 learn/ping

image_thumb[31]

Das Command retourniert eine neue ID, die ImageID (hier: effb66b31edb). Mit dem Command docker commit sieht man übrigens alle möglichen Parameter. Nun kann das gespeicherte Image neu instanziert (gestartet) werden:

docker run learn/ping ping google.com

image_thumb[35]

In diesem Fall kann das Command mit Ctrl-C to disconnect. Der Container läuft weiter (im Tutorial wird er automatisch disconnected).

Mit docker ps (hatten wir zuvor bereits) sehen wir eine Liste aller laufenden Container. In unserem Beispiel ist das nur einer: efe...

image_thumb[39]

Mit docker inspect  folgt eine Ausgabe verschiedener Informationen im JSON-Format. Der Container "efe..." liefert IP-Adresse, Status und weitere interessante Daten:

docker inspect efe 

image_thumb[43]

Zum Abschluss kann das erstellte Image wieder in in das Repository, sorry, in die Docker Hub Registry, ge-push-t (upgeloadet) werden - schon lustig, wenn man ein englisches Wort mit einem anderen englischen Wort beschreibt...).

docker push learn/ping 

image_thumb[48]

Mit docker images folgt eine Liste aller Images, die sich auf dem eigenen Host befinden.

will show you which images are currently on your host. docker push is the command to push images. This emulator is logged in as user 'learn'. You can only push images to your own namespace.

image_thumb[51]

Next Steps

Die nächsten Schritte sind:

Docker on channel9

Auf channel9 gibt es mittlerweile einige Sessions zum Thema Docker.

In der Edge Show 116 informieren die Experten über Docker on Azure. Unter anderem hat auch Ben Armstrong auf der TEE14 ein Interview über den Unterschied zwischen Virtualisierung und Docker gegeben: Containers with Docker and Microsoft. Alles sehr interessante Inhalte.

In Teil 3 geht es dann weiter mit der Verwendung von Docker.

Viel Spaß beim Erforschen und Testen von Apps mit Docker!

Quicklinks:

Loading