
Docker Guide
Eine umfassende Einführung und Übersicht der wichtigsten Docker-Befehle
Was ist Docker
In der heutigen Zeit ist die Containerisierung eine Schlüsseltechnologie für Entwickler und DevOps-Teams. Docker ermöglicht es, Anwendungen effizient zu erstellen, zu verwalten und bereitzustellen. In diesem Artikel werden wir die Grundlagen der Installation und ersten Schritte mit Docker-Containern erläutern. Wir werden uns mit der Installation von Docker, der Funktionsweise von Containern, der Erstellung von Docker-Images und der effektiven Verwaltung von Containern beschäftigen. Außerdem werden wir einen Blick auf Docker Compose werfen, ein wichtiges Tool für die Arbeit mit mehreren Containern.
Wie kann ich Docker installieren?
Welche Betriebssysteme unterstützen die Installation von Docker?
Docker ist eine vielseitige Plattform, die auf verschiedenen Betriebssystemen funktioniert. Zu den unterstützten Betriebssystemen gehören Windows, Linux und macOS. Für Windows-Benutzer bietet Docker Desktop eine benutzerfreundliche Oberfläche, um Docker zu installieren und zu verwalten. Auf Linux-Systemen kann Docker direkt über das Terminal installiert werden, was Entwicklern eine hohe Flexibilität bietet. macOS-Benutzer können ebenfalls Docker Desktop verwenden. Jedes dieser Betriebssysteme hat spezifische Anforderungen und Installationsanleitungen, die befolgt werden sollten, um eine reibungslose Installation von Docker zu gewährleisten.
Wie führe ich die Installation von Docker durch?
Die Installation von Docker ist relativ einfach. Zunächst müssen Sie die offizielle Docker-Website besuchen und das Installationspaket für Ihr Betriebssystem herunterladen. Für Windows-Benutzer ist es wichtig, sicherzustellen, dass die Hyper-V-Funktion aktiviert ist. Nach dem Herunterladen führen Sie das Installationsprogramm aus und folgen den Anweisungen auf dem Bildschirm. Bei Linux-Systemen können Sie die Installation über die Paketverwaltung durchführen. Zum Beispiel können Sie den Befehl `apt-get install docker.io` verwenden, um Docker auf Ubuntu zu installieren. Nach der Installation sollten Sie den Dienst starten und sicherstellen, dass Docker ordnungsgemäß ausgeführt wird.
Gibt es spezielle Voraussetzungen für die Installation?
Ja, es gibt einige Voraussetzungen, die erfüllt sein müssen, bevor Sie Docker installieren können. Zunächst benötigen Sie ein unterstütztes Betriebssystem, wie bereits erwähnt. Außerdem sollten Sie sicherstellen, dass Ihr Computer Virtualisierungsfunktionen unterstützt, was für die Ausführung von Containern wichtig ist. Bei Windows müssen Sie auch die Windows-Subsystem für Linux (WSL) aktivieren, um eine bessere Docker-Integration zu ermöglichen. Es ist auch ratsam, über Administratorrechte zu verfügen, um die Installation und spätere Verwaltung von Docker-Containern zu erleichtern.
Was sind Docker-Container und wie funktionieren sie?
Was ist der Unterschied zwischen einem Docker-Container und einem Docker-Image?
Docker-Container und Docker-Images sind zwei zentrale Konzepte in der Docker-Welt, die oft verwechselt werden. Ein Docker-Image ist eine statische Datei, die alle notwendigen Anweisungen und Abhängigkeiten enthält, um eine Anwendung auszuführen. Es ist das Template, aus dem Container erstellt werden. Im Gegensatz dazu ist ein Docker-Container eine instanzierte Version eines Docker-Images, die in einer isolierten Umgebung läuft. Container sind leichtgewichtig und bieten die Möglichkeit, Anwendungen schnell zu starten und zu stoppen. Diese Containerisierung ermöglicht eine effiziente Nutzung von Ressourcen und verbessert die Skalierbarkeit von Anwendungen.
Wie kann ich einen Docker-Container ausführen?
Um einen Docker-Container auszuführen, verwenden Sie den Befehl `docker run`. Dieser Befehl ermöglicht es Ihnen, ein bestimmtes Image zu laden und einen neuen Container zu starten. Beispielsweise können Sie den Befehl `docker run -d -p 80:80 nginx` verwenden, um einen Nginx-Webserver im Hintergrund auszuführen und die Ports zu konfigurieren. Der `-d`-Parameter steht für "detached mode", während `-p` die Ports verbindet. Nach dem Ausführen des Befehls können Sie den Status Ihres Containers mit `docker ps` überprüfen, um sicherzustellen, dass er erfolgreich läuft.
Wie verwalte ich mehrere Container gleichzeitig?
Die Verwaltung mehrerer Docker-Container kann eine Herausforderung sein, jedoch bietet Docker leistungsstarke Tools zur Verwaltung. Mit dem Befehl `docker-compose` können Sie mehrere Container in einer einzigen Compose-Datei definieren und verwalten. Diese Datei beschreibt die Container, Netzwerke und Volumes, die für Ihre Anwendung erforderlich sind. Wenn Sie Docker Compose verwenden, können Sie den Befehl `docker-compose up` ausführen, um alle definierten Container in einer einzigen Befehlszeile zu starten. Dies erleichtert nicht nur die Verwaltung, sondern auch die Skalierung Ihrer Anwendungen, da Sie Container nach Bedarf hinzufügen oder entfernen können.
Wie erstelle ich ein Docker-Image?
Was ist ein Dockerfile und wie wird es verwendet?
Ein Dockerfile ist eine Textdatei, die die Anweisungen zur Erstellung eines Docker-Images enthält. In einem Dockerfile definieren Sie die Basis-Images, Abhängigkeiten und Konfigurationseinstellungen für Ihre Anwendung. Zum Beispiel können Sie ein einfaches Dockerfile erstellen, das auf einem Node.js-Image basiert, und die Anwendung in einem spezifischen Verzeichnis installieren. Docker verwendet die Anweisungen im Dockerfile, um ein Image zu erstellen, das dann als Grundlage für einen Container dienen kann. Der Befehl `docker build -t mein-image .` wird verwendet, um ein Docker-Image aus dem Dockerfile zu erstellen.
Wie konfiguriere ich ein Docker-Image?
Die Konfiguration eines Docker-Images erfolgt durch die Anpassung des Dockerfiles. Sie können Umgebungsvariablen setzen, Ports freigeben und Abhängigkeiten installieren, um die spezifischen Anforderungen Ihrer Anwendung zu erfüllen. Darüber hinaus können Sie auch Skripte und Befehle in das Dockerfile einfügen, die während des Build-Prozesses ausgeführt werden. Dies macht es möglich, ein maßgeschneidertes Docker-Image zu erstellen, das optimal auf die Bedürfnisse Ihrer Anwendung zugeschnitten ist. Nach der Konfiguration können Sie das Image mit dem Befehl `docker build` erstellen und anschließend bei Docker Hub hochladen oder lokal verwenden.
Wie lade ich Images von Docker Hub herunter?
Docker Hub ist das zentrale Repository für Docker-Images, wo Entwickler ihre Images bereitstellen und teilen können. Um ein Image von Docker Hub herunterzuladen, verwenden Sie den Befehl `docker pull`. Zum Beispiel können Sie `docker pull ubuntu` verwenden, um das offizielle Ubuntu-Image herunterzuladen. Docker prüft, ob das Image lokal verfügbar ist, und lädt es bei Bedarf aus dem Repository herunter. Nach dem Herunterladen können Sie das Image verwenden, um Container zu erstellen und auszuführen.
Wie verwalte ich Docker-Container effektiv?
Welche Befehle sind wichtig für das Verwalten von Containern?
Die Verwaltung von Docker-Containern erfordert die Verwendung einer Vielzahl von Befehlen, um den gewünschten Zustand der Container zu erreichen. Wichtige Befehle sind `docker ps`, um die laufenden Container anzuzeigen, `docker stop`, um einen Container anzuhalten, und `docker rm`, um einen Container zu löschen. Darüber hinaus sollten Sie `docker logs` verwenden, um die Protokolle eines Containers einzusehen und mögliche Fehler zu diagnostizieren. Ein guter Entwickler sollte sich mit all diesen Befehlen vertraut machen, um die Verwaltung von Containern reibungslos zu gestalten und effizient auf Probleme reagieren zu können.
Wie kann ich Container miteinander kommunizieren lassen?
In einer Microservices-Architektur ist es häufig erforderlich, dass Container miteinander kommunizieren. Docker bietet verschiedene Möglichkeiten, um diese Kommunikation zu ermöglichen. Eine der einfachsten Methoden ist die Verwendung von Docker-Netzwerken. Wenn Sie ein Netzwerk erstellen und Container diesem Netzwerk zuordnen, können diese Container über ihre Namen miteinander kommunizieren. Zum Beispiel können Sie zwei Container, die in demselben Netzwerk sind, mit dem Befehl `docker run --network mein-netzwerk` starten und dann über die Container-Namen kommunizieren. Dies erleichtert die Interaktion zwischen den verschiedenen Diensten Ihrer Anwendung.
Wie kann ich Container stoppen und löschen?
Um einen Docker-Container zu stoppen, verwenden Sie den Befehl `docker stop <container-id>`. Dies sendet ein Signal an den Container, um ihn sicher herunterzufahren. Wenn Sie einen Container endgültig löschen möchten, können Sie den Befehl `docker rm <container-name>` verwenden. Es ist wichtig zu beachten, dass Sie einen Container nur löschen können, wenn er gestoppt ist. Wenn Sie ein Bild nicht mehr benötigen, können Sie den Befehl `docker rmi <image-name>` verwenden, um das Image aus Ihrer lokalen Registry zu entfernen. Diese Befehle sind entscheidend für die effektive Verwaltung Ihrer Docker-Umgebung und helfen, Speicherplatz zu sparen und Ordnung zu halten.
Was ist Docker Compose und wie benutze ich es?
Wie installiere ich Docker Compose?
Docker Compose ist ein leistungsstarkes Tool, das die Verwaltung mehrerer Container vereinfacht. Um Docker Compose zu installieren, müssen Sie sicherstellen, dass Docker bereits auf Ihrem System installiert ist. Die Installation kann über das Terminal erfolgen, indem Sie den Befehl `curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose` verwenden. Danach müssen Sie die Berechtigungen mit `chmod +x /usr/local/bin/docker-compose` anpassen. Durch die Eingabe von `docker-compose --version` können Sie überprüfen, ob die Installation erfolgreich war.
Wie erstelle ich eine Compose-Datei?
Eine Compose-Datei ist eine YAML-Datei, die die Container, Netzwerke und Volumes beschreibt, die für Ihre Anwendung erforderlich sind. Um eine Compose-Datei zu erstellen, müssen Sie ein neues Verzeichnis anlegen und eine Datei mit dem Namen `docker-compose.yml` erstellen. In dieser Datei definieren Sie die Dienste, die Abhängigkeiten, Ports und Umgebungsvariablen. Ein einfaches Beispiel könnte so aussehen:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: exampleMit dieser Konfiguration können Sie sowohl den Webserver als auch die Datenbank gleichzeitig starten.
Wie starte ich mehrere Container mit Docker Compose?
Um mehrere Container mit Docker Compose zu starten, navigieren Sie einfach in das Verzeichnis, in dem sich Ihre Compose-Datei befindet, und führen den Befehl `docker-compose up` aus. Dieser Befehl liest die `docker-compose.yml`-Datei und startet alle definierten Container. Sie können auch den `-d`-Parameter hinzufügen, um die Container im Hintergrund auszuführen. Mit `docker-compose down` können Sie alle Container und Netzwerke, die durch die Compose-Datei erstellt wurden, wieder stoppen und löschen. Docker Compose ist ein unverzichtbares Werkzeug, wenn es darum geht, komplexe Anwendungen zu orchestrieren und zu verwalten.
1. Docker-Grundlagen
docker version
Zeigt die installierte Docker-Version (Client und Server) an.
docker versiondocker info
Gibt detaillierte Informationen zur Docker-Installation (Treiber, Anzahl Container, Images etc.) aus.
docker infodocker help
Zeigt allgemeine Hilfe oder detailierte Hilfe zu einem bestimmten Docker-Befehl.
docker helpdocker help rundocker login
Meldet sich bei einer Docker-Registry (z.B. Docker Hub) an, um Images zu pushen/pullen.
docker logindocker login my.registry.com2. Container-Verwaltung
docker run
Startet einen Container auf Basis eines Images. Verschiedene Flags erlauben Ports, Volumes oder Umgebungsvariablen zu setzen.
docker run hello-worlddocker run -d -p 80:80 --name webserver nginxdocker ps
Listet laufende Container auf (ohne -a). Mit -a werden auch gestoppte Container angezeigt.
docker psdocker ps -adocker stop
Stoppt laufende Container anhand des Namens oder der ID.
docker stop webserverdocker stop 123abcdocker start
Startet einen bereits erstellten (gestoppten) Container erneut.
docker start webserverdocker restart
Stoppt und startet einen Container neu.
docker restart webserverdocker rm
Löscht einen (gestoppten) Container. Mit -f werden auch laufende Container erzwungen gestoppt und gelöscht.
docker rm webserverdocker rm -f webserverdocker logs
Zeigt die Log-Ausgabe eines Containers. Mit -f kann das Log fortlaufend verfolgt werden.
docker logs webserverdocker logs -f webserverdocker exec
Führt einen Befehl in einem laufenden Container aus (z.B. eine Shell).
docker exec -it webserver /bin/bashdocker exec webserver ls /var/www3. Images-Verwaltung
docker images
Listet lokale Docker-Images auf.
docker imagesdocker pull
Lädt ein Docker-Image aus einer Registry (z.B. Docker Hub) herunter.
docker pull ubuntudocker pull my.registry.com/benutzer/imagename:tagdocker push
Lädt ein lokales Docker-Image in eine Registry hoch. Setzt meist ein vorheriges Login voraus.
docker push benutzer/meinimage:latestdocker push my.registry.com/benutzer/meinimage:1.0docker build
Baut ein neues Docker-Image aus einem Dockerfile im angegebenen Kontext (Ordner).
docker build -t benutzer/meinimage:1.0 .docker build -f Pfad/zum/Dockerfile -t benutzer/meinimage .docker tag
Erstellt oder aktualisiert einen Tag für ein bestehendes Docker-Image.
docker tag vorhandenes_image:alt neuer_tag:neudocker rmi
Löscht ein oder mehrere Docker-Images vom lokalen System.
docker rmi ubuntudocker rmi benutzer/meinimage:1.04. Volumes und Netzwerke
docker volume create
Erstellt ein neues Docker-Volume zum Speichern von Daten.
docker volume create mein_volumedocker volume ls
Listet alle vorhandenen Docker-Volumes auf.
docker volume lsdocker volume rm
Löscht ein oder mehrere Docker-Volumes.
docker volume rm mein_volumedocker volume rm volume1 volume2docker network create
Erstellt ein benutzerdefiniertes Docker-Netzwerk.
docker network create mein_netzwerkdocker network ls
Listet die verfügbaren Docker-Netzwerke auf.
docker network lsdocker network rm
Löscht ein oder mehrere Docker-Netzwerke.
docker network rm mein_netzwerkdocker network inspect
Zeigt Details zu einem Docker-Netzwerk, wie verbundene Container und Einstellungen.
docker network inspect bridgedocker network inspect mein_netzwerk5. Docker Compose
docker-compose up
Startet alle im docker-compose.yml definierten Dienste. Mit -d läuft alles im Hintergrund.
docker-compose updocker-compose up -ddocker-compose down
Stoppt und entfernt alle Dienste, Container, Netzwerke und Volumes, die in docker-compose.yml definiert sind (sofern nicht benannt).
docker-compose downdocker-compose down --volumesdocker-compose build
Baut die Images neu, die in docker-compose.yml definiert sind.
docker-compose builddocker-compose ps
Zeigt den Status der Container, die über Docker Compose gestartet wurden.
docker-compose ps6. Sonstige nützliche Befehle
docker system df
Zeigt den durch Docker-Objekte (Container, Images, Volumes) belegten Speicherplatz an.
docker system dfdocker system prune
Räumt ungenutzte oder hängende Docker-Objekte auf (Container, Images, Netzwerke).
docker system prunedocker system prune -a (entfernt auch ungenutzte Images)docker inspect
Zeigt detaillierte Informationen zu einem Container oder Image als JSON.
docker inspect webserverdocker inspect ubuntudocker stats
Zeigt Ressourcenverbrauch (CPU, RAM, Netzwerklast) laufender Container in Echtzeit an.
docker statsdocker stats webserverdocker cp
Kopiert Dateien zwischen Container und Host.
docker cp webserver:/pfad/zur/datei ./lokaler_ortdocker cp datei.txt webserver:/pfad/im/container/