Docker-Einführung, Teil 4 Docker-Bereitstellung unter Ubuntu Linux

Autor / Redakteur: Dipl. -Ing. Thomas Drilling / Stephan Augsten |

Endlich können wir uns mit der Installation und Inbetriebnahme von Docker und der Bereitstellung erster Container befassen. Mit einem MySQL-Server-Container spielen wir diesen Vorgang exemplarisch durch.

Anbieter zum Thema

Hier spielen wir die Inbetriebnahme eines Docker-Containers mithilfe eines MySQL-Sever-Images durch.
Hier spielen wir die Inbetriebnahme eines Docker-Containers mithilfe eines MySQL-Sever-Images durch.
(Bild: Drilling / Canonical)

Gehen wir gleich in die Vollen. Da Docker eine ureigene Linux-Thematik ist, zeigen wir der Form halber zunächst die Docker-Installation unter Ubuntu. Dazu sei noch einmal angemerkt, dass die einfache praktische Handhabbarkeit von Docker im Vordergrund dieses Beitrages steht.

Im fünften Teil widmen wir uns dann der Bereitstellung und Handhabung von Docker unter Windows mit grafischen Werkzeugen. Nun aber wieder zurück zu Ubuntu-Linux. Zunächst aktualisieren wie die involvierten Paketquellen:

$ sudo apt-get update

Für das Docker-Repository wird ein GPG-Schlüssel benötigt.
Für das Docker-Repository wird ein GPG-Schlüssel benötigt.
(Bild: Drilling / Canonical)

Das offizielle Docker-Repository verlangt nach einem GPG-Key. Daher fügen wir jetzt noch Folgendes an

$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Dann fügen wir das offizielle Docker-Repository den eigenen Paketquellen hinzu;

$ sudo add-apt-repository „deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable“

Danach aktualisieren wir erneut die Paketquellen.

$ sudo apt-get update

Für die Arbeit mit Docker wollen wir das Docker-Repository als Standard-Paketquelle definieren.
Für die Arbeit mit Docker wollen wir das Docker-Repository als Standard-Paketquelle definieren.
(Bild: Drilling / Canonical)

Vor der eigentlichen Installation von Docker muss sichergestellt sein, dass diese nicht über die standardmäßigen Ubuntu-Repos sondern über das eben eingerichtete das Docker-Repository erfolgt. Das prüfen wir vorab mit:

$ apt-cache policy docker-ce

Die Abbildung offenbart, dass „docker-ce“ nicht installiert ist und der vorgesehene Installationskandidat vom Docker-Repository für Ubuntu 18.04 stammt.

Docker ist offensichtlich einsatzbereit.
Docker ist offensichtlich einsatzbereit.
(Bild: Drilling / Canonical)

Demzufolge können wir docker-ce jetzt mit …

$ sudo apt install docker-ce

… installieren und mit …

$ sudo systemctl status docker

… prüfen, ob die Installation erfolgreich war und Docker läuft.

Systemrelevante Informationen liefert uns Docker mit dem sudo-Befehl „docker info“.
Systemrelevante Informationen liefert uns Docker mit dem sudo-Befehl „docker info“.
(Bild: Drilling / Canonical)

Um alle verfügbaren Docker-Subcommands zu sehen, könnte man jetzt „sudo docker“ eingeben; systemweite Information zu Docker zu erhält man mit dem Befehl „sudo docker info“. Hier sieht man beispielsweise, wie viele Container verfügbar sind und wie viele davon laufen, pausiert oder gestoppt wurden. Auch zum Host-System finden sich zahlreiche Informationen.

Existiert ein Image nicht lokal, wird es kurzerhand nachgezogen.
Existiert ein Image nicht lokal, wird es kurzerhand nachgezogen.
(Bild: Drilling / Canonical)

Für einen ersten Test startet man nun einen Container aus dem „Hello-World“-Image und zwar in der Version „latest“ (Tag), was der Default-Version entspricht.

$ sudo docker run hello-world

Dies wird auch funktionieren, wenn das Image lokal nicht vorliegt, weil Docker es dann automatisch über Docker-Hub bezieht, das Default-Image-Repository. Alternativ kann man das Image auch zuvor mit …

$ sudo docker pull hello-world

… lokal herunterladen.

Hier ziehen wir uns den MySQL-Server als Image.
Hier ziehen wir uns den MySQL-Server als Image.
(Bild: Drilling / Canonical)

Für einen nächsten Test laden wir das Image für MySQL in der aktuellen Version (latest) zunächst lokal herunter:

$ sudo docker pull mysql

Mit dem Befehl …

$ sudo docker image ls

… zeigen wir dann die aktuell verfügbaren Images an.

Kleines Docker-Tutorial
Bildergalerie mit 7 Bildern

Für das Bauen und Starten eines MySQL-Containers bedarf es Credentials. Außerdem variiert der Startaufruf je nach dem, aus welcher „Umgebung“ dieser erfolgen soll. Einige Beispiele liefert ein Besuch auf Docker-Hub. Hier klickt man auf „Explore“ und navigiert dann zu „MySQL“ und klickt auf „Details“. Um eine neue MySQL-Server-Instanz zu starten, kann man das Image der Anleitung zur Folge also wie folgt verwenden:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Hierbei ist „some-myql” der Name des Containers und „mysql” der des Images. Ist es wie in unserem Fall nicht bereits lokal verfügbar, wird es wiederum von Docker-Hub bezogen. Statt „:tag“ verwenden wir „;latest“ für die aktuellste Version.

Interner Blick auf die MySQL-Oberfläche im Docker-Container unter Ubuntu.
Interner Blick auf die MySQL-Oberfläche im Docker-Container unter Ubuntu.
(Bild: Drilling / Canonical)

Das „MYSQL_ROOT_PASSWORD” kann mit „my-secret-pw” nach Belieben gesetzt werden. Der Parameter -d sorgt dafür, dass MySQL, bzw. der Container im Daemon-Modus gestartet wird und „aktiv“ bleibt. Schließlich erweitern wir das Kommando noch um „-P 3306“, um eine Portbindung für Port 3306 auf dem Docker-Host zu erzwingen, damit wird uns auch probeweise von intern (docker Host / Ubuntu) …

Analog dazu der Remote-Zugriff über Windows.
Analog dazu der Remote-Zugriff über Windows.
(Bild: Drilling / Microsoft)

… oder extern (Windows Workstation) auf dem MySQL-Server verbinden können. Wird kein Ziel-Port angegeben, nimmt Docker einen flüchtigen Port aus dem dafür vorgesehenen Portrange zwischen 32768 und 61000. Der Erfolg wird mit Ausgabe der Container-ID quittiert, die man auch nachträglich jederzeit mit „sudo docker ps“ sehen kann.

Der sudo-Befehl „docker ps“ listet alle laufenden Container und liefert die ID mit.
Der sudo-Befehl „docker ps“ listet alle laufenden Container und liefert die ID mit.
(Bild: Drilling / Canonical)

Kleines Docker-Tutorial
Bildergalerie mit 7 Bildern

(ID:45469103)