Docker-Einführung, Teil 4 Docker-Bereitstellung unter Ubuntu Linux
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

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
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
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.
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.
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.
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.
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.
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.
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) …
… 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.
(ID:45469103)