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.
Volume
Volumes sind vom Container getrennte Verzeichnisse auf dem Host.System. In Ihnen werden die Dateien gespeichert, die auch beim Wechsel von Versionen erhalten bleiben. z.B. Datenbanken.
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.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project