0251 / 590 644 - 0
info@a-coding-project.de

Virtualisierung mit Docker-Containern

Was ist Docker?

Docker ist eine Software, die die Virtualisierung von Software in Form von Containern ermöglicht. Ein Container ist eine nach außen abgeschirmte Sandbox, die alles enthält, was sie zum Ausführern der eigenen Anwendung benötigt. Container sind daher portabel und weitgehend unabhängig vom Betriebssystem des Computers auf dem sie laufen. Docker wird auf Linux, Windows und MacOs unterstützt.

Die möglichen Anwendungsbereiche für Docker sind kaum zu überschauen. Als Beispiel wollen wir uns hier vorerst auf den Bereich Webentwicklung mit Php beschränken.

Welchen Vorteil bietet Docker für php-Entwickler?

Generell ist es bei Php-Projekten sinnvoll wenn jeder Entwickler im Team dasselbe lokale Setup benutzt. Unterschiedliche Php-Versionen, oder unterschiedlich konfigurierte Server, führen schnell zu Situationen, wo der Code, der beim ersten Entwickler noch funktionierte, beim nächsten Entwickler nicht mehr läuft.
Wenn aber jeder Entwickler praktisch auf dasselbe Setup zugreifen kann, entfällt die unter Umständen recht zeitaufwendige und fehleranfällige Einrichtung von lokalen Servern und Software.

Virtualisierte Container stellen jedem Entwickler identische Umgebungen mit identischen Software-Versionen zur Verfügung. Soll zu einem Zeitpunkt zum Beispiel die Php-Version aktualisiert werden, würde das nur eine Änderung in der Docker-Konfiguration für das jeweilige Projekt bedeuten.

Grundbegriffe

Image

Ein Image kann als eine Art Blaupause angesehen werden, aus der man Container erstellen kann. In der Regel entspricht ein Image einer Dockerfile-Datei. In dieser Datei werden alle nötigen Schritte zum Erzeugen des Images beschrieben. Wenn ein Image einmal erfolgreich erzeugt wurde, kann man daraus beliebig viele Container erzeugen.

Container

Man kann das Image auch als Klasse ansehen, während ein Container eine Instanz dieser Klasse ist. Ein Container ist eine einsatzbereite Version eines Images. Wenn er gestartet wurde, kann er über einen nach außen freigegebenen Port erreichbar gemacht werden.
Container sind generell unabhängig von ihrer Außenwelt, können aber mit anderen Containern verlinkt werden, damit sie deren Services nutzen können. So kann zum Beispiel ein Apache-Container mit einem MySql-Container verlinkt werden, um dessen Datenbank zu nutzen.
Container können gestartet und gestoppt werden.

Wie setze ich Docker ein?

In der Docker-Registry auf https://hub.docker.com finden sich für viele Anwendungsfälle bereits fertige Container, die oft auch ohne Anpassungen direkt genutzt werden können. Die hier gelisteten Images lassen sich direkt von der Command-Line bauen und starten, aber oft ist es praktischer, sich die jeweilige Dockerfile runterzuladen.

docker build . kann in einem Verzeichnis, das eine Dockerfile enthält ausgeführt werden, um die Erzeugung dieses Images zu starten. Der Punkt "." gibt den jeweiligen Build-Kontext an, in diesem Fall also das aktuelle Verzeichnis. Das ist wichtig, wenn bei der Erzeugung zum Beispiel Config-Dateien in das Image kopiert werden sollen.

docker run erzeugt aus einem Image einen Container.

docker stop #containerID stoppt einen Container.

docker rm #containerID entfernt einen Container.

docker rmi #imageId entfernt ein Image. Vorher müssen aber alle Container, die dieses Image benutzen gestoppt und entfernt sein.

docker ps zeigt alle laufenden Container an.

docker images zeigt alle lokal verfügbaren Images an.

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant