Wie man Docker unter Debian 12 installiert und verwendet

Docker ist eine Reihe offener Plattformen, die Virtualisierung auf Betriebssystemebene für die Entwicklung, Bereitstellung und Ausführung von Anwendungen bieten. In Docker werden Anwendungen als standardisierte Pakete, sogenannte Container, bereitgestellt. Jeder Container ist von den anderen isoliert, einschließlich der Bibliotheken und Konfigurationsdateien, aber jeder kann über genau definierte Netzwerkkanäle kommunizieren.

Inzwischen ist Docker zu einem Standard für Softwareentwicklung und DevOps geworden. Millionen von Entwicklern nutzen es, um täglich Anwendungen zu erstellen, zu teilen und auszuführen. Es wird im gesamten Lebenszyklus der Anwendungsentwicklung eingesetzt, von der Entwicklung selbst über das Testen bis hin zur Produktion. Mit Docker wird die Anwendung flexibler und portabel. Anwendungen können problemlos auf verschiedenen Betriebssystemen ausgeführt werden, aber die Anwendung selbst bleibt dieselbe, von den Bibliotheken bis zu den Konfigurationsdateien.

In dieser Anleitung zeige ich dir, wie du die Docker Engine auf dem neuesten Debian 12 installierst. Außerdem erfährst du, wie du den Docker-Dienst über systemctl verwaltest und wie du Docker für die Verwaltung von Images, Containern und Volumes einsetzt.

Voraussetzungen

Vergewissere dich, dass du die folgenden Voraussetzungen erfüllst, bevor du mit diesem Leitfaden beginnst:

Ein Debian 12-Rechner – Du kannst sowohl Debian Desktop als auch Server verwenden.
Ein Nicht-Root-Benutzer mit sudo-Administrator-Rechten.

Installation der Docker-Engine

Um die neueste Version der Docker Engine zu erhalten, musst du sie über das offizielle Docker-Repository installieren. Du musst zuerst das Docker-Repository und den GPG-Schlüssel hinzufügen und dann die Docker Engine installieren.

Aktualisiere zunächst das Debian-Repository, um die neuesten Paketinformationen zu erhalten. Dann installierst du das Basispaket ca-certificates, curl und gnupg auf deinem Debian-System. Wenn du dazu aufgefordert wirst, gib y ein und bestätige mit ENTER.

sudo apt update
sudo apt install ca-certificates curl gnupg

curl gnupg installieren

Führe nun die folgenden Befehle aus, um den GPG-Schlüssel für das Docker-Repository einzurichten, der im Verzeichnis /etc/apt/keyrings/ gespeichert wird.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Danach führst du den folgenden Befehl aus, um das Docker-Repository für das Debian-System hinzuzufügen. Zum Zeitpunkt der Erstellung dieses Artikels bietet Docker Repositories für Debian 11 und 12 an.

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Hinzufügen von Docker-Gpg-Schlüssel und Repository

Als Nächstes aktualisierst du das Debian-Repository erneut und installierst die Docker Engine mit dem unten stehenden apt-Befehl. Dieser Befehl installiert auch containerd, die Standard-Container-Engine, das Docker buildx-Plugin als Standard-Build-A-Plugin mit BuildKit-Fähigkeiten und Docker compose als Plugin.

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Gib y ein, wenn du dazu aufgefordert wirst und drücke ENTER.

Docker installieren

Nachdem du Docker installiert hast, führe den folgenden Befehl aus, um die Version zu überprüfen. Während dieses Artikels ist Docker v24.0.4 auf Debian 12 installiert.

docker version

Docker-Version

Docker-Dienst verwalten

Die Docker-Engine benötigt den containerd, der als Standard-Container-Engine verwendet wird. Sowohl containerd als auch Docker sollten auf deinem Docker-Host laufen. Jetzt lernst du, wie du die Dienste Docker und containerd mit dem systemd-Dienstprogramm systemctl verwalten kannst.

Unter Debian sind die Dienste docker und containerd automatisch aktiviert. Führe den folgenden Befehl aus, um die Dienste von Docker und containerd zu überprüfen.

sudo systemctl is-enabled docker
sudo systemctl is-enabled containerd

Wenn sie aktiviert sind, solltest du die aktivierte Ausgabe in deinem Terminal sehen.

Prüfung, ob der Dienst aktiviert ist

Führe nun den folgenden Befehl aus, um den Dienststatus von docker und containerd zu überprüfen.

sudo systemctl status docker
sudo systemctl status containerd

Wenn der Dienst läuft, wird die Meldung active (running) auf deinem Terminal angezeigt.

Überprüfung des Dockerdienstes

Als Nächstes kannst du den unten stehenden Befehl ausführen, um die Dienste docker und containerd zu starten.

sudo systemctl start docker
sudo systemctl start containerd

Wenn du Docker stoppen musst, führe die folgenden Befehle aus, um die Dienste Docker und containerd zu stoppen.

sudo systemctl stop docker
sudo systemctl stop containerd

Wenn du Änderungen an der Docker-Konfiguration vorgenommen hast, starte sie mit dem folgenden Befehl neu.

sudo systemctl restart docker
sudo systemctl restart containerd

Docker für Nicht-Root-Benutzer konfigurieren

Standardmäßig kann nur der root-Benutzer den Container mit der Docker Engine ausführen. Um Nicht-Root-Benutzer zuzulassen, musst du den Benutzer zur Docker-Gruppe hinzufügen. Um deinen Benutzer zur Docker-Gruppe hinzuzufügen, fülle diese Abschnitte aus und führe dann den hello-world-Container aus.

Führe den Befehl usermod aus, um deinen Benutzer zur Docker-Gruppe hinzuzufügen und melde dich mit su als dein Benutzer an.

sudo usermod -aG docker username
su - username

Gib nun den folgenden Befehl ein, um den hello-world-Container über deinen Benutzer auszuführen.

docker run hello-world

Wenn alles klappt, sollte dir der Docker-Container die Meldung Hello World anzeigen:

Docker für Nicht-Root

Wenn du den folgenden Docker-Befehl ausführst, kannst du die Liste der Container überprüfen.

docker ps -a

Du solltest einen Container mit dem Status Exited sehen. Der Name des Containers hello-world ist standardmäßig zufällig, in diesem Fall ist der Name optmistic_edison.

Check-Toantiner

Ausführen und Verwalten von Containern mit Docker

Jetzt läuft die Docker-Engine und du kannst mit der Erstellung von Containern über die Docker-Kommandozeile beginnen. Im folgenden Abschnitt lernst du die grundlegende Verwendung von Docker für:

  • Verwalten von Docker-Images
  • Erstellen und Verwalten von Containern
  • Überprüfen von Container-Protokollen
  • Docker-Volumen erstellen und verwalten

Docker-Images verwalten

Ein Docker-Image ist die Gesamtheit deiner Anwendung, die in ein einziges Image verpackt ist und einfach über die Image-Registry verteilt werden kann. Die Standard-Image-Registry für Docker ist https://hub.docker.com/.

Im folgenden Abschnitt erfährst du, wie du Docker-Images herunterladen, heruntergeladene Images überprüfen und Images löschen kannst.

Um das Docker-Image von der Docker Registry herunterzuladen, führe den folgenden Befehl docker pull aus. Mit dem folgenden Befehl wird das nginx-Image mit dem Standard-Tag latest heruntergeladen.

docker pull nginx

Docker ziehen

Um die Image-Version anzugeben, füge die Imager-Version nach dem Ziel-Image hinzu, wie im Folgenden beschrieben.

docker pull nginx:alpine

bestimmte Bildversion herunterladen

Überprüfe nun die verfügbaren Images auf deinem Docker-Host mit dem unten stehenden Befehl.

docker images

Die heruntergeladenen Docker-Images sollten mit detaillierten Informationen wie dem Image-Tag und der Größe verfügbar sein.

Bilder auflisten

Verwende schließlich den Parameter rmi, um das Docker-Image von deinem Rechner zu entfernen.

docker rmi imagename

Verwaltung von Containern

Ein Container ist der Ort, an dem deine Anwendung ausgeführt wird, und er basiert auf deinem Docker-Image. Ein Container kann ein bestimmtes Verzeichnis oder Volume für persistente Daten mounten und einen bestimmten Port im Docker-Host für die Anwendung freigeben.

In diesem Abschnitt erfährst du, wie du den Container erstellst und ausführst, den Container überprüfst und den Container über die Docker-Kommandozeile startest und stoppst.

Um den Container zu starten, verwende den run-Parameter innerhalb des Docker-Befehls wie folgt.

docker run -it -d -p 8080:80 --name web nginx:alpine

Mit dem folgenden Befehl wird ein Container-Web mit dem Image nginx:alpine gestartet. Außerdem wird der Container Web den Port 80 im Container und den Port 8080 auf dem Docker-Host-Rechner freigeben. Mit dem Parameter -it trennst du dich vom Container, und mit dem Parameter -d wird das Container-Web im Hintergrund ausgeführt.

runc reate container

Führe nun den Befehl docker ps aus, um die Liste der Container auf deinem Docker-Rechner zu überprüfen.

docker ps
docker ps -a

Wenn alles gut läuft, solltest du sehen, dass der Container Web läuft und den Port 8080 auf dem Host-Rechner freigibt.

Kontrollbehälter

Während der Befehl docker run den Container erstellt und startet, kannst du den Container auch über den Befehl docker starten und stoppen.

Führe den Befehl docker stop aus, um das Container-Web zu stoppen.

docker container stop web
docker ps -a

Stoppbehälter

Um den Container Web wieder zu starten, verwende den folgenden Befehl docker start.

docker container start web
docker ps

Startcontainer

Zum Schluss führst du den Befehl docker rm aus, um den Container zu löschen. Der Parameter -f wird verwendet, um das Löschen des Containers zu erzwingen, auch wenn der Zielcontainer noch läuft.

docker container rm optimistic_edison
docker container rm optimistic_edison -f

Container löschen

Prüfen der Container-Logs

Die Überprüfung der Logs in Docker ist wichtig, denn du wirst sie immer brauchen, um deine containerisierte Anwendung zu debuggen. Jetzt lernst du, wie du die Container-Logs in Docker überprüfen kannst.

Um die Logs des Containers zu prüfen, verwende den Parameter logs im Docker-Befehl wie folgt. Damit werden die Logs seit der Erstellung des Containers angezeigt.

docker logs web

toantiner log prüfen

Du kannst auch die Option –tail N hinzufügen, um nur die neuesten Logs abzurufen, wie hier. In diesem Fall werden mit der Option –tail 15 nur die letzten 15 Zeilen der Logs angezeigt.

docker logs --tail 15 web

letzten Log-Container prüfen

Docker-Volumen verwalten

Docker Volume ist der Ort, an dem deine Anwendung persistenten Speicher nutzen kann. Du kannst deine Container wechseln und trotzdem das gleiche Volume oder die gleichen Daten für deine Anwendung verwenden. Der folgende Abschnitt zeigt dir die grundlegende Nutzung von Docker-Volume, von der Erstellung von Volume bis zur Überprüfung und Nutzung von Volume innerhalb des Containers.

Um ein neues Volume zu erstellen, führst du den unten stehenden Befehl docker volume aus. In dieser Demo wirst du ein neues Docker-Volume myvol erstellen.

docker volume create myvol

Überprüfe die verfügbaren Volumes auf deinem Docker-Host mit der Option ls wie folgt. Du solltest sehen, dass das Volume myvol erstellt wurde.

docker volume ls

check volume docker erstellen

Standardmäßig erstellt Docker ein Volume mit dem lokalen Treiber, der das lokale Verzeichnis als Datenspeicher verwendet. Und das Standardverzeichnis für den Datenspeicher befindet sich im Verzeichnis /var/lib/docker/volume. Führe die Option inspect wie folgt aus, um die Details des Volumes myvol zu überprüfen.

docker volume inspect myvol

Du solltest sehen, dass das Volume myvol den Standardtreiber local hat und dass sich der Datenspeicher im Verzeichnis /var/lib/docker/volumes/myvol/_data befindet. Der Abschnitt Mountpoint ist das Verzeichnis des lokalen Datenspeichers.

Detailvolumen

Als Nächstes kannst du Docker-Volume auf deinem Container über die Option -v, die alle Optionen in einem Feld zusammenfasst, und die Option –mount, die eine explizitere, ausführlichere und getrennte Syntax hat, verwenden.

Führe den folgenden Befehl docker run aus, um einen neuen Container web2 mit dem Volume myvol über die Option –mount zu erstellen. Überprüfe dann den Container web mit dem Befehl docker inspect.

docker run -d \
  -p 8081:80 \
  --name web2 \
  --mount source=myvol,target=/app \
  nginx:alpine
docker inspect web

Im Abschnitt Mounts solltest du sehen, dass der Container web das Volume myvol für das Zielverzeichnis /app innerhalb des Containers verwendet.

Kontrollmontage

Um die Option -v zu verwenden, muss der Befehl docker run wie folgt aussehen. Die Option -v verwendet ein einzelnes Feld, um das Volume myvol2 in das Zielverzeichnis /app einzuhängen.

docker run -d \
  -p 8082:80 \
  --name web3 \
  -v myvol2:/app \
  nginx:alpine

Zum Schluss führst du den unten stehenden Befehl docker volume mit dem Parameter rm aus, um das Docker-Volume zu entfernen

docker rm web2 -f
docker volume rm myvol

Fazit

Tolle Arbeit! Du hast die Installation der Docker Engine auf deinem Debian 12 Server abgeschlossen. Außerdem hast du gelernt, wie du den Docker-Dienst über das Dienstprogramm systemctl verwaltest und wie du Docker-Images, Container und Docker-Volumes über den Docker-Client verwaltest.

Wenn du dich weiter mit dem Thema beschäftigst, kannst du ein Docker-Image für deine Anwendung über Dockerfile erstellen.

Das könnte dich auch interessieren …