Docker

Docker Container und Images

Mit Docker kannst Du Anwendungen in isolierten Containern ausführen, die unabhängig von der Umgebung laufen und reproduzierbare Ergebnisse liefern. Docker-Images dienen als Basis für Container und enthalten alle Abhängigkeiten einer Anwendung.


4 Minuten Lesezeit
03 Nov 2024
Docker Container und Images

Was lerne ich in diesem Kurs?

Durch die Nutzung der hier vorgestellten Docker-Kommandos kannst Du Container starten, stoppen, überwachen und verwalten und somit die volle Kontrolle über Deine Docker-Umgebung behalten.

Erste Schritte mit Docker

Docker ist ein mächtiges Werkzeug, das Anwendungen in sogenannten Containern isoliert und sie unabhängig von der zugrunde liegenden Infrastruktur ausführt. Container sind leichtgewichtige, portable Einheiten, die es ermöglichen, Anwendungen mit allen ihren Abhängigkeiten konsistent auszuführen. Im folgenden Tutorial erfährst Du, was Docker-Container und Images sind, und lernst grundlegende Docker-Kommandos zur Verwaltung von Containern kennen.

Was sind Container und Images?

Ein Container ist eine isolierte Umgebung, in der eine Anwendung und all ihre Abhängigkeiten ausgeführt werden können. Container basieren auf Docker-Images, die wie Vorlagen oder Blaupausen für den Container funktionieren. Ein Image enthält alles, was für die Ausführung der Anwendung benötigt wird, einschließlich des Betriebssystems, der Bibliotheken und der Anwendungsdateien.

Durch das Starten eines Containers aus einem Image wird eine Instanz der Anwendung erstellt, die unabhängig von anderen Containern und von der Umgebung des Host-Systems läuft. Container sind somit eine ideale Lösung für konsistente und portable Anwendungen.

Wichtige Docker-Befehle

Docker-Container ausführen

Um einen Docker-Container zu starten, kannst Du den Befehl docker container run verwenden. Hier ist ein einfaches Beispiel, um einen NGINX-Webserver auf Port 8000 des Hosts auszuführen:

docker container run --publish 8000:80 nginx

Dieser Befehl startet einen neuen Container aus dem NGINX-Image und verbindet den Port 8000 des Hosts mit dem Port 80 im Container, auf dem der Webserver läuft. Die Option --publish (oder -p) ermöglicht die Zuordnung der Ports zwischen Host und Container.

Hintergrundausführung und spezifische Image-Versionen

Um einen Container im Hintergrund laufen zu lassen, verwende die Option -d (für detached). Hier ist ein Beispiel, bei dem eine bestimmte Version von NGINX (1.11) im Hintergrund ausgeführt wird. Die Option -T gibt außerdem die Konfiguration von NGINX im Terminal aus:

docker container run --publish 8000:80 -d nginx:1.11 nginx -T

Hier wird der Container basierend auf der Version 1.11 des NGINX-Images im Hintergrund ausgeführt. Der Container gibt zusätzlich die NGINX-Konfiguration auf der Konsole aus.

Container starten und stoppen

Um einen gestarteten Container zu stoppen, verwende docker container stop. Gib die Container-ID oder den Container-Namen an, um den gewünschten Container zu stoppen:

docker container stop <CONTAINER_ID>

Zum Starten eines gestoppten Containers kannst Du docker container start verwenden:

docker container start <CONTAINER_ID>

Diese Kommandos ermöglichen es Dir, einen Container bei Bedarf anzuhalten und später wieder zu starten.

Container-Prozesse anzeigen

Um die aktiven Prozesse in einem laufenden Container zu sehen, verwende docker container top:

docker container top <CONTAINER_ID>

Dieser Befehl zeigt die aktuell laufenden Prozesse im Container an und ist nützlich, um zu überprüfen, ob die Anwendung wie gewünscht ausgeführt wird.

Ressourcenverbrauch von Containern überwachen

Docker bietet mit docker container stats die Möglichkeit, den Ressourcenverbrauch eines oder mehrerer Container zu überwachen. Der Befehl zeigt Informationen wie CPU- und Speicherauslastung in Echtzeit an:

docker container stats <CONTAINER_ID>

Dieser Befehl ist besonders hilfreich zur Überwachung der Performance und zur Identifikation von Containern, die möglicherweise zu viel Speicher oder CPU verbrauchen.

Container-Logs anzeigen

Um die Logs eines Containers zu sehen, verwende den Befehl docker container logs. Dies ist nützlich, um Fehler oder Ausgaben der Anwendung zu überprüfen:

docker container logs <CONTAINER_ID>

Mit diesem Befehl kannst Du die Ausgabe des Containers einsehen, als würdest Du direkt auf das Terminal des Containers zugreifen.

Erstellen eines Docker-Images aus einem Container (z. B. mit NGINX)

In Docker kannst Du ein Image direkt aus einem laufenden Container erstellen. Dadurch lassen sich Änderungen, die Du in einem Container vorgenommen hast, in ein neues Image übernehmen und wiederverwenden. Hier zeigen wir Dir, wie Du ein Docker-Image aus einem Container mit NGINX erstellst.

Schritt 1: Container mit NGINX starten und anpassen

Starte einen Container mit NGINX und führe darin alle gewünschten Anpassungen durch. Zum Beispiel kannst Du den Container starten und Dich in die Shell des Containers begeben, um Anpassungen vorzunehmen.

docker container run -d --name mein_nginx_container nginx

In diesem Beispiel startet ein neuer NGINX-Container im Hintergrund und erhält den Namen mein_nginx_container.

Falls Du Anpassungen direkt im Container vornehmen möchtest, öffne die Shell:

docker exec -it mein_nginx_container /bin/bash

Du kannst nun Änderungen vornehmen, wie z. B. die Konfiguration von NGINX anpassen, neue Dateien hinzufügen oder vorhandene bearbeiten.

Schritt 2: Änderungen in ein Image speichern

Nachdem Du die gewünschten Anpassungen im Container vorgenommen hast, kannst Du daraus ein Image erstellen. Der Befehl docker commit speichert den Zustand des Containers als Image.

docker commit mein_nginx_container mein_nginx_image

In diesem Beispiel erstellt Docker ein neues Image namens mein_nginx_image, das auf dem aktuellen Zustand von mein_nginx_container basiert.

Schritt 3: Überprüfen des neuen Images

Nachdem Du das Image erstellt hast, kannst Du prüfen, ob es in Deiner Liste der Docker-Images vorhanden ist.

docker images

Das neue Image mein_nginx_image sollte jetzt in der Liste erscheinen. Es ist eine Kopie des ursprünglichen Containers, einschließlich aller Anpassungen, die Du darin vorgenommen hast.

Schritt 4: Image testen

Um sicherzustellen, dass das Image wie erwartet funktioniert, kannst Du daraus einen neuen Container starten und die Konfiguration überprüfen.

docker container run -d --name test_nginx_container mein_nginx_image

Dieser Befehl startet einen neuen Container namens test_nginx_container basierend auf dem erstellten Image mein_nginx_image. Überprüfe, ob Deine Anpassungen wie erwartet übernommen wurden, indem Du auf den Container zugreifst oder die NGINX-Konfiguration testest.

Alternativer Ansatz: Image-Erstellung mit Dockerfile

Ein häufig verwendeter Ansatz zum Erstellen eines Docker-Images besteht darin, ein Dockerfile zu schreiben, das die Konfiguration definiert. Dies ist die bevorzugte Methode, da sie wiederholbare Builds und eine bessere Versionierung ermöglicht. Ein einfaches Dockerfile für einen NGINX-Server könnte so aussehen:

# Verwende das Basis-Image nginx
FROM nginx:latest

# Kopiere eine benutzerdefinierte Konfigurationsdatei in den Container
COPY nginx.conf /etc/nginx/nginx.conf

# Exponiere den NGINX-Port
EXPOSE 80

Erstelle ein Image aus diesem Dockerfile:

docker build -t custom_nginx_image .

Ein Dockerfile ist eine flexible und empfehlenswerte Methode für das Image-Building, da es den Build-Prozess automatisiert und leicht versionierbar macht.

Online- und Präsenzkurse zum Thema

Finden Sie interessante und zum Thema passende Kurse

Docker - Grundlagen

In diesem Seminar lernen Sie, was Container sind, wie Sie sie erstellen und verwalten und wie Sie Docker in Ihren Projekten nutzen können. Ziel ist es, Docker von Grund auf zu verstehen und in realen Projekten anwenden zu können.

2 Tage Vollzeit Online

Nächster Termin: 16. Dezember 2024
Preis pro Person: 900,00 EUR

Rabattaktion: 3 für den Preis von 2!

Git Schulung: Einführung

In unserem 3-Tages Git & GitHub Einführungskurs erlernen Sie den effektiven Umgang mit Git und GitHub, der führenden Plattform für Versionskontrolle und Kollaboration. Von den ersten Commits bis zu fortgeschrittenen Branching-Strategien und Pull Requests bietet der Kurs eine umfassende Einführung. Sie werden praxisnah GitHub-Workflows anwenden, Merges und Konflikte lösen sowie Releases verwalten. Hands-on Aufgaben vertiefen Ihr Wissen und bereiten Sie darauf vor, Git und GitHub sicher in Ihren Projekten einzusetzen. Dieser Kurs richtet sich sowohl an Einsteiger als auch an Entwickler, die ihre GitHub-Kenntnisse erweitern möchten.

3 Tage Vollzeit Online

Nächster Termin: 24. März 2025
Preis pro Person: 1200,00 EUR

Rabattaktion: 3 für den Preis von 2!