Docker Schnellstart: Warum? Wofür Container? Hardware?
Was sind Docker Container?
Docker-Container sind kleine isolierte Programmeinheiten, die unabhängig vom Betriebssystem auf einem nahezu beliebigen PC oder Server gestartet werden können. Die Benutzeroberfläche eines Containers wird meist in Form eines Webservice zur Verfügung gestellt und kann dadurch über eine Adresse im Browser erreicht werden. Der Aufruf von einem PC, Smartphone oder Tablet erfolgt über einen beliebigen Browser und setzt daher keine zusätzlich installierte Software oder App voraus.
Wie kann ein Docker-Container gestartet werden?
Für den Start eines Containers reicht die Angabe eines Images in der Form von Hersteller/Imagename. Ermöglicht wird dies durch die Docker Registry, einer Art Bibliothek für Container. Nach der Installation ist Docker mit der offiziellen online Docker Registry: Docker Hub verbunden, wodurch die Angabe des Imagenamens für den Download und Start des Containers reicht: Egal auf welcher Hardware, egal welches Betriebssystem und egal welche anderen Programme bereits auf dem System installiert wurden: Durch die Kapselung sind die Container isoliert und unabhängig und beinhalten alle für den Betrieb notwendigen Abhängigkeiten.
Befehl für den Start eines Containers
Im Detail schaut der Startvorgang eines Containers im Terminal wie folgt aus:
docker run docker/getting-started
Der Befehl "docker run" lädt den Container "getting-started" vom Hersteller "docker" herunter und startet diesen:
C:\Users\LiBe>docker run -p 8080:80 docker/getting-started
Unable to find image 'docker/getting-started:latest' locally
latest: Pulling from docker/getting-started
...
2023/05/28 18:30:23 [notice] 1#1: start worker processes
Der Parameter -p 8080:80 veröffentlicht den Port 80 und stellt diesen über localhost und Port 8080 zur Verfügung:
Wie kann die Benutzeroberfläche eines Containers aufgerufen werden?
Der Zugriff auf ein Dockerservice erfolgt meist über einen bereitgestellten Webservice. In der Regel kann der von einem Container zur Verfügung gestellte Webserver über den Browser mit localhost und einem beim Containerstart angegebenen Port aufgerufen werden: als Beispiel: http://localhost:8080
Voraussetzung: beinahe beliebiger PC oder Server, Betriebssystem und die Docker Installation
Als Hardware für den Start der Container kann ein beliebiger Computer oder Mini-PC mit x68-64 Architektur eingesetzt werden, siehe: Home-Server. Abhängig davon welches Betriebssystem eingesetzt wird, weicht die eigentliche Docker-Installation ab:
- Docker-Installation: Linux: Docker Engine 👍(Empfohlene Variante)
- Docker-Installation: Windows: Docker Desktop (Für Test und Demo-Zwecke)
Docker-Container setzen einen Linux-Kernel voraus, daher können Container mit einer Linux-Distribution - im Gegensatz zu Windows - voraussichtlich mit weniger Overhead betrieben werden.
Mehrere Container für ein bestimmtes Service -> Docker Compose
Docker Container stellen Netzwerkservices bereit, als Beispiel einen Webserver oder eine Datenbank. Bestimmte Webapplikationen benötigen für deren Betrieb mehrere Container. Der Start mehrerer Container und deren Zugriff auf und untereinander kann mittels Docker-Compose und einer einfachen Testdatei vorgegeben werden: docker-compose.yml.
Der zuvor erwähnte Container: "getting-started" kann über eine docker-compose.yml-Datei wie folgt definiert werden:
Textdatei mit Namen "docker-compose.yml"
Inhalt:
services:
app:
image: docker/getting-started
ports:
- 8080:80
Wird eine Textdatei mit diesem Inhalt befüllt, können alle in der Datei erwähnten Services aus deren Ordner mit einem Befehl gestartet werden: "docker compose up"
root@server:~/# docker compose up
Creating network "test_default" with the default driver
Creating test_app_1 ... done
Attaching to test_app_1
Um weitere Services über die Textdatei zu starten, können diese als zusätzliche Services hinzugefügt werden:
services:
app:
image: docker/getting-started
ports:
- 8080:80
app2:
image: docker/getting-started
ports:
- 8081:80
Schritt für Schritt- Anleitung als YouTube-Video
Für ein sicheres Veröffentlichen von Webservices über das Internet, siehe auch: sichere https Verbindung: Traefik Reverse Proxy + Let´s Encrypt
Docker-Webservices, Beispiele
Hier eine Liste von Webservices, die ich bisher getestet habe:
{{percentage}} % positiv