Einführung
Docker ist eine leistungsstarke Containerisierungspaltform (Containerization Platform), die die Art und Weise, wie Entwickler Anwendungen erstellen, bereitstellen und verwalten, revolutioniert hat. In diesem Tutorial erfahren Sie, wie Sie Ihre Docker-Installation überprüfen und sicherstellen können, dass sie ordnungsgemäß funktioniert. Sie werden auch erfahren, wie Sie häufige Probleme beheben können, die beim Arbeiten mit Docker auftreten können.
Am Ende dieses Labs werden Sie einen soliden Überblick darüber haben, wie Sie die Details Ihrer Docker-Installation überprüfen und sicherstellen können, dass Ihre Docker-Umgebung ordnungsgemäß funktioniert.
Für das Lernen in diesem Lab ist eine Internetverbindung erforderlich. Daher können nur Pro-Nutzer die VM starten. Upgradeen Sie Ihr Konto auf Pro
Überprüfen der Docker-Version und des -Status
Bevor Sie sich in Docker-Operationen stürzen, ist es wichtig zu überprüfen, ob Docker korrekt auf Ihrem System installiert und ordnungsgemäß läuft. In diesem Schritt überprüfen wir die Docker-Version und den Status des Daemons.
Überprüfen der Docker-Version
Zunächst überprüfen wir die auf Ihrem System installierte Docker-Version. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:
docker --version

Dieser Befehl zeigt die installierte Docker-Version an. Die Ausgabe sollte in etwa so aussehen:
Docker version 20.10.21, build baeda1f
Für detailliertere Versionsinformationen, einschließlich der Client- und Serverkomponenten, verwenden Sie:
docker version
Dadurch werden umfassende Versionsinformationen für den Docker-Client und -Server (Daemon) angezeigt, zusammen mit anderen Details wie der Go-Version, die zur Erstellung von Docker verwendet wurde. Die Ausgabe sieht in etwa so aus:
Client:
Version: 20.10.21
API version: 1.41
Go version: go1.18.1
Git commit: baeda1f
Built: Tue Oct 25 18:02:28 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.1
Git commit: 3056208
Built: Tue Oct 25 18:00:19 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.10
GitCommit: 770bd0108c32f3fb5c73ae1264f7e503fe7b2661
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Wenn Sie eine Fehlermeldung wie "docker: command not found" erhalten, bedeutet dies, dass Docker nicht korrekt installiert oder nicht in Ihrem Pfad (PATH) ist.
Überprüfen des Docker-Daemon-Status
Nun überprüfen wir, ob der Docker-Daemon (Dienst) läuft. Der Docker-Daemon ist der Hintergrunddienst, der für die Verwaltung von Docker-Containern verantwortlich ist.
Führen Sie den folgenden Befehl aus:
sudo systemctl status docker
Die Ausgabe sollte anzeigen, dass der Docker-Dienst aktiv und läuft:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-05-10 12:34:56 UTC; 2h 15min ago
Main PID: 1234 (dockerd)
Tasks: 8
Memory: 38.5M
CPU: 25.102s
CGroup: /system.slice/docker.service
└─1234 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Wenn der Docker-Dienst nicht läuft, können Sie ihn starten mit:
sudo systemctl start docker
Um sicherzustellen, dass Docker automatisch beim Systemstart startet, können Sie es aktivieren:
sudo systemctl enable docker
Überprüfen der Docker-Informationen
Um einen umfassenden Überblick über Ihre Docker-Installation zu erhalten, verwenden Sie den Befehl docker info:
docker info
Dadurch werden detaillierte Informationen über Ihre Docker-Installation angezeigt, einschließlich:
- Anzahl der Container und Images
- Speichertreiber (Storage Driver)
- Docker-Wurzelverzeichnis
- Laufzeitinformationen (Runtime Information)
- Netzwerkeinstellungen
- Registrierungskonfiguration (Registry Configuration)
Die Ausgabe ist recht umfangreich, bietet aber wertvolle Informationen über Ihre Docker-Konfiguration.
Ausführen eines Testcontainers
Nachdem wir bestätigt haben, dass Docker installiert und läuft, testen wir es nun, indem wir einen einfachen Container ausführen. Dieser Schritt überprüft, ob Docker Images herunterladen und Container korrekt ausführen kann.
Der Hello-World-Container
Docker bietet ein einfaches "hello-world"-Image, das speziell zum Testen von Docker-Installationen entwickelt wurde. Dieser winzige Container überprüft, dass:
- Der Docker-Client eine Verbindung zum Docker-Daemon herstellen kann
- Der Docker-Daemon Images von Docker Hub herunterladen kann
- Docker einen Container erstellen und ausführen kann
Führen wir diesen Testcontainer mit dem folgenden Befehl aus:
docker run hello-world
Wenn Sie diesen Befehl zum ersten Mal ausführen, wird Docker:
- Überprüfen, ob das hello-world-Image lokal vorhanden ist
- Wenn nicht, es von Docker Hub herunterladen
- Einen Container aus diesem Image erstellen
- Den Container starten, der eine Nachricht ausgibt und dann beendet wird
Die Ausgabe sollte in etwa so aussehen:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:ffb13da98453e0f04d33a6eee5bb8e46ee50d08ebe17735fc0779d0349e889e9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Diese Nachricht bestätigt, dass Ihre Docker-Installation korrekt funktioniert.
Auflisten der Container
Nachdem wir den hello-world-Container ausgeführt haben, überprüfen wir die Liste der Container auf Ihrem System. Der Container, den wir gerade ausgeführt haben, hat bereits beendet, aber wir können ihn immer noch in der Liste aller Container sehen.
Um alle Container (einschließlich der gestoppten) anzuzeigen, führen Sie aus:
docker ps -a
Die Ausgabe sollte in etwa so aussehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7c33e8f6cb8 hello-world "/hello" 2 minutes ago Exited (0) 2 minutes ago romantic_galileo
Der -a-Schalter zeigt alle Container an, einschließlich derjenigen, die beendet wurden. Ohne diesen Schalter würde docker ps nur die laufenden Container anzeigen.
Beachten Sie, dass in der Spalte STATUS "Exited (0)" steht, was bedeutet, dass der Container seine Aufgabe abgeschlossen hat und mit einem Statuscode von 0 beendet wurde (was Erfolg anzeigt).
Auflisten der Docker-Images
Das hello-world-Image wurde auf Ihren lokalen Rechner heruntergeladen. Überprüfen wir dies, indem wir alle Docker-Images auflisten:
docker images
Die Ausgabe sollte in etwa so aussehen:
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 6 months ago 13.3kB
Dies bestätigt, dass das hello-world-Image lokal auf Ihrem System gespeichert ist.
Erkunden der grundlegenden Docker-Befehle
Nachdem wir bestätigt haben, dass unsere Docker-Installation korrekt funktioniert, erkunden wir nun einige grundlegende Docker-Befehle, die Ihnen bei der Verwaltung von Containern und Images helfen werden.
Ausführen eines interaktiven Containers
Im Gegensatz zum hello-world-Container, der sofort startet und beendet wird, können wir Container interaktiv ausführen. Führen wir einen Ubuntu-Container aus und interagieren wir mit seiner Shell:
docker run -it ubuntu bash
Dieser Befehl:
-ihält STDIN geöffnet-treserviert eine pseudo-TTY (Terminal)ubuntuist der Name des Imagesbashist der Befehl, der im Container ausgeführt werden soll
Sobald der Container startet, befinden Sie sich an einer bash-Eingabeaufforderung innerhalb des Containers:
root@3f4d92618a09:/#
Die Eingabeaufforderung zeigt an, dass Sie als root im Container angemeldet sind. Die alphanumerische Zeichenfolge ist die Container-ID.
Versuchen Sie, einige Linux-Befehle innerhalb des Containers auszuführen:
cat /etc/os-release
Dadurch werden Informationen zur in diesem Container ausgeführten Ubuntu-Version angezeigt:
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
Wenn Sie mit der Exploration fertig sind, verlassen Sie den Container, indem Sie eingeben:
exit
Dadurch gelangen Sie zurück zu Ihrem Host-Terminal.
Verwaltung des Container-Lebenszyklus
Erkunden wir, wie der Lebenszyklus eines Containers verwaltet wird. Zunächst starten wir einen Container im detached-Modus:
docker run -d --name web nginx
Dieser Befehl:
-dführt den Container im detached-Modus (im Hintergrund) aus--name webweist dem Container den Namen "web" zunginxist das zu verwendende Image
Auf dem Bildschirm wird eine lange Container-ID angezeigt.
Nun überprüfen wir, ob der Container läuft:
docker ps
Sie sollten den laufenden nginx-Container sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d3f8c1f8a3d nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp web
Um den Container zu stoppen:
docker stop web
Überprüfen Sie, ob er gestoppt ist:
docker ps
Der Container sollte nicht mehr in der Liste der laufenden Container erscheinen. Um alle Container, einschließlich der gestoppten, anzuzeigen:
docker ps -a
Sie sollten sowohl den nginx- als auch den hello-world-Container im gestoppten Zustand sehen.
Um den Container erneut zu starten:
docker start web
Und um einen Container zu entfernen, wenn Sie ihn nicht mehr benötigen:
docker stop web
docker rm web
Verwaltung von Docker-Images
Erkunden wir, wie Docker-Images verwaltet werden. Um alle Images aufzulisten:
docker images
Sie sollten mindestens die hello-world- und nginx-Images sehen.
Um ein Image zu entfernen, wenn Sie es nicht mehr benötigen:
docker rmi hello-world
Beachten Sie, dass Sie keine Images entfernen können, die von Containern verwendet werden (auch nicht von gestoppten Containern). Sie müssen diese Container zuerst entfernen.
Docker-Systeminformationen
Um den von Docker (Container, Images, Volumes) verwendeten Speicherplatz zu überprüfen:
docker system df
Dadurch wird eine Zusammenfassung der Speicherplatznutzung angezeigt:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 1 187.8MB 187.8MB (99%)
Containers 2 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
Um detailliertere Informationen zu erhalten:
docker system df -v
Dadurch wird eine Aufschlüsselung jedes Images und Containers sowie ihrer Größen angezeigt.
Beheben häufiger Docker-Probleme
Selbst bei einer korrekt installierten Docker-Umgebung können Sie während der normalen Nutzung Probleme auftreten. Erkunden wir einige häufige Docker-Probleme und ihre Lösungen.
Problem: Docker-Daemon nicht gestartet
Sie können diesen Schritt überspringen, wenn Sie den Docker-Dienst bereits im vorherigen Schritt gestartet haben.
Wenn Sie versuchen, einen Docker-Befehl auszuführen und eine Fehlermeldung wie diese erhalten:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Dies bedeutet, dass der Docker-Daemon nicht läuft. Um dies zu beheben:
- Überprüfen Sie den Status des Docker-Dienstes:
sudo systemctl status docker
- Wenn er nicht läuft, starten Sie ihn:
sudo systemctl start docker
- Wenn der Dienst nicht startet, überprüfen Sie die Protokolle auf Fehler:
sudo journalctl -u docker
Simulieren wir dieses Problem und seine Lösung:
## Zunächst stoppen wir den Docker-Dienst, um das Problem zu simulieren
sudo systemctl stop docker
## Versuchen Sie, einen Docker-Befehl auszuführen
docker ps
## Sie werden die Fehlermeldung "Cannot connect" sehen
## Starten Sie jetzt den Dienst neu, um es zu beheben
sudo systemctl start docker
## Überprüfen Sie, ob Docker wieder funktioniert
docker ps
Problem: Berechtigung verweigert
Wenn Sie eine Fehlermeldung wie diese sehen:
Got permission denied while trying to connect to the Docker daemon socket
Dies bedeutet normalerweise, dass Ihr Benutzer keine Berechtigung hat, auf den Docker-Socket zuzugreifen. Die Lösung besteht darin, Ihren Benutzer zur docker-Gruppe hinzuzufügen:
sudo usermod -aG docker $USER
Nachdem Sie diesen Befehl ausgeführt haben, müssten Sie normalerweise abmelden und wieder anmelden, damit die Änderungen wirksam werden. Da wir in einer Lab-Umgebung mit dem labex-Benutzer sind, der bereits die richtigen Berechtigungen hat, müssen wir diesen Schritt nicht ausführen.
Problem: Speicherplatzprobleme
Docker kann im Laufe der Zeit viel Speicherplatz mit ungenutzten Images, Containern und Volumes verbrauchen. Wenn Ihr System an Speicherplatz knapp wird:
- Überprüfen Sie die Docker-Speicherplatznutzung:
docker system df
- Entfernen Sie ungenutzte Ressourcen:
## Entfernen Sie alle gestoppten Container
docker container prune
## Entfernen Sie alle ungenutzten Images
docker image prune
## Entfernen Sie alle ungenutzten Volumes
docker volume prune
## Oder entfernen Sie alles Unnötige mit einem Befehl
docker system prune
Demonstrieren wir den Pruning-Befehl:
## Erstellen Sie einige Container, die sofort beenden
docker run hello-world
docker run ubuntu echo "This will exit immediately"
## Entfernen Sie jetzt die gestoppten Container
docker container prune
Sie werden aufgefordert, den Vorgang zu bestätigen:
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Geben Sie y ein, um zu bestätigen. Sie sollten eine Ausgabe sehen, die die entfernten Container anzeigt.
Problem: Container startet nicht
Wenn ein Container nicht startet, können Sie die Ursache untersuchen, indem Sie seine Protokolle überprüfen:
## Versuchen Sie zunächst, einen Container zu starten, der möglicherweise fehlschlägt
docker run --name failing-container ubuntu apt-get update
## Überprüfen Sie die Protokolle
docker logs failing-container
Möglicherweise sehen Sie in den Protokollen Fehler, die darauf hinweisen, warum der Container fehlgeschlagen ist.
Problem: Netzwerkprobleme
Wenn Container nicht miteinander oder mit der Außenwelt kommunizieren können:
- Überprüfen Sie die Netzwerkkonfiguration von Docker:
docker network ls
- Untersuchen Sie ein bestimmtes Netzwerk:
docker network inspect bridge
- Testen Sie die Konnektivität von innerhalb eines Containers:
## Starten Sie einen Container mit Netzwerkfunktion
docker run -it ubuntu bash
## Installieren Sie von innerhalb des Containers das ping-Tool
apt-get update && apt-get install -y iputils-ping
## Versuchen Sie, eine Website zu pingen
ping google.com
## Verlassen Sie den Container
exit
Docker-Protokolle und Debugging
Für die allgemeine Docker-Fehlerbehebung kann es hilfreich sein, die Protokolle des Docker-Daemons zu überprüfen:
sudo journalctl -u docker
Für die Protokolle eines bestimmten Containers:
docker logs <container_id>
Sie können auch einen Echtzeit-Stream der Protokolle erhalten:
docker logs -f <container_id>
Diese Fehlerbehebungstechniken helfen Ihnen, die meisten häufigen Docker-Probleme zu diagnostizieren und zu beheben.
Zusammenfassung
In diesem Lab haben Sie die wesentlichen Fähigkeiten erlernt, um Ihre Docker-Installation zu überprüfen und zu verwalten:
- Überprüfen der Docker-Version und des Daemon-Status, um die korrekte Installation zu bestätigen
- Ausführen von Testcontainern, um die Funktionalität von Docker zu überprüfen
- Verwenden grundlegender Docker-Befehle zur Verwaltung von Containern und Images
- Erkunden der Verwaltung des Container-Lebenszyklus
- Beheben häufiger Docker-Probleme
Diese Fähigkeiten bilden eine solide Grundlage für die Arbeit mit Docker-Containern. Sie können nun zuversichtlich überprüfen, ob Ihre Docker-Umgebung korrekt eingerichtet ist, und alle auftretenden Probleme beheben.
Wenn Sie Ihre Docker-Reise fortsetzen, können Sie auf diesen Grundlagen aufbauen, um containerisierte Anwendungen effizient zu erstellen, bereitzustellen und zu verwalten.



