Wie man die Docker-Installationsdetails überprüft

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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
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:

  1. Überprüfen, ob das hello-world-Image lokal vorhanden ist
  2. Wenn nicht, es von Docker Hub herunterladen
  3. Einen Container aus diesem Image erstellen
  4. 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:

  • -i hält STDIN geöffnet
  • -t reserviert eine pseudo-TTY (Terminal)
  • ubuntu ist der Name des Images
  • bash ist 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:

  • -d führt den Container im detached-Modus (im Hintergrund) aus
  • --name web weist dem Container den Namen "web" zu
  • nginx ist 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:

  1. Überprüfen Sie den Status des Docker-Dienstes:
sudo systemctl status docker
  1. Wenn er nicht läuft, starten Sie ihn:
sudo systemctl start docker
  1. 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:

  1. Überprüfen Sie die Docker-Speicherplatznutzung:
docker system df
  1. 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:

  1. Überprüfen Sie die Netzwerkkonfiguration von Docker:
docker network ls
  1. Untersuchen Sie ein bestimmtes Netzwerk:
docker network inspect bridge
  1. 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.