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
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
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.
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-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.
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.
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:
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.
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
Um die Image-Version anzugeben, füge die Imager-Version nach dem Ziel-Image hinzu, wie im Folgenden beschrieben.
docker pull nginx:alpine
Ü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.
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.
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.
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
Um den Container Web wieder zu starten, verwende den folgenden Befehl docker start.
docker container start web docker ps
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
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
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
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
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.
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.
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.