cryeffect.net

Docker – Container erstellen, verwalten und löschen

Übersicht: Docker

Was ist Docker?

Docker ist eine Plattform zur Containerisierung, die es Entwicklern ermöglicht, Anwendungen und deren Abhängigkeiten in isolierten Containern zu verpacken. Diese Container können auf verschiedenen Systemen konsistent ausgeführt werden, was die Portabilität und Skalierbarkeit von Anwendungen verbessert.

Vorteile von Docker

  • Portabilität: Container laufen auf jeder Plattform, die Docker unterstützt.
  • Effizienz: Container teilen sich den Kernel des Host-Systems, was sie ressourcenschonender macht als virtuelle Maschinen.
  • Schnelle Bereitstellung: Anwendungen können schnell gestartet und gestoppt werden.
  • Isolierung: Anwendungen laufen in isolierten Umgebungen, was Konflikte zwischen Abhängigkeiten minimiert.
  • Skalierbarkeit: Container können einfach repliziert und skaliert werden.

Nachteile von Docker

  • Komplexität: Die Verwaltung von Containern und Images kann bei großen Projekten komplex werden.
  • Sicherheitsrisiken: Unsichere Images oder falsch konfigurierte Container können Sicherheitslücken verursachen.
  • Abhängigkeit vom Host-Kernel: Container sind auf den Kernel des Host-Systems angewiesen, was zu Kompatibilitätsproblemen führen kann.

Wie installiert man Docker?

Die Installation von Docker ist einfach und unterscheidet sich je nach Betriebssystem. Hier sind die grundlegenden Schritte für Linux:

  1. Paketquellen aktualisieren:
    Aktualisiere die Paketquellen und installiere notwendige Tools, um Docker herunterzuladen und zu installieren.

    1
    2
    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  2. Docker GPG-Schlüssel hinzufügen:
    Füge den offiziellen GPG-Schlüssel von Docker hinzu, um die Authentizität der Pakete zu gewährleisten.

    1
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. Docker-Repository hinzufügen:
    Füge das Docker-Repository zu den Paketquellen hinzu, um die neueste Version von Docker zu installieren.

    1
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  4. Docker installieren:
    Installiere Docker und die dazugehörigen Komponenten wie den Docker-CLI und den Containerd-Dienst.

    1
    2
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
  5. Docker-Dienst starten und aktivieren:
    Starte den Docker-Dienst und aktiviere ihn, damit er bei jedem Systemstart automatisch ausgeführt wird.

    1
    2
    sudo systemctl start docker
    sudo systemctl enable docker
  6. Optional: Benutzer zur Docker-Gruppe hinzufügen:
    Füge deinen Benutzer zur Docker-Gruppe hinzu, um Docker-Befehle ohne sudo ausführen zu können. Melde dich danach ab und wieder an, damit die Änderungen wirksam werden.

    1
    sudo usermod -aG docker $USER

Docker ist nun installiert und bereit zur Nutzung. Du kannst die Installation testen, indem du den folgenden Befehl ausführst:

1
docker --version

Wie erstellt man einen Docker-Container?

  1. Docker-Image erstellen:

    Ein Docker-Image ist eine Vorlage, die alle notwendigen Dateien, Abhängigkeiten und Konfigurationen enthält, um eine Anwendung auszuführen. Um ein Image zu erstellen, schreibst du eine Dockerfile. Diese Datei beschreibt Schritt für Schritt, wie das Image aufgebaut wird. Zum Beispiel:

    1
    2
    3
    4
    5
    FROM node:22  # Basis-Image mit Node.js Version 22
    WORKDIR /app # Arbeitsverzeichnis im Container
    COPY . . # Kopiert alle Dateien aus dem aktuellen Verzeichnis in den Container
    RUN npm install # Installiert die Abhängigkeiten der Anwendung
    CMD ["node", "app.js"] # Startet die Anwendung

    In diesem Beispiel wird ein Node.js-Projekt vorbereitet, indem die Dateien kopiert und die Abhängigkeiten installiert werden. Das Image wird so konfiguriert, dass es die Anwendung mit node app.js startet.

  2. Image bauen:

    Nachdem die Dockerfile erstellt wurde, kannst du das Image mit dem Befehl docker build bauen. Dieser Befehl liest die Anweisungen in der Dockerfile und erstellt ein ausführbares Image.

    1
    docker build -t mein-image .
    • -t mein-image: Gibt dem Image einen Namen (in diesem Fall “mein-image”).
    • .: Gibt an, dass die Dockerfile im aktuellen Verzeichnis liegt.

    Nach dem erfolgreichen Bauen wird das Image in deiner lokalen Docker-Registry gespeichert und kann verwendet werden, um Container zu starten.

  3. Container starten:

    Ein Container ist eine laufende Instanz eines Docker-Images. Um einen Container zu starten, verwendest du den Befehl docker run.

    1
    docker run -d --name mein-container -p 3000:3000 mein-image
    • -d: Startet den Container im Hintergrund (“detached mode”).
    • --name mein-container: Gibt dem Container einen Namen (in diesem Fall “mein-container”).
    • -p 3000:3000: Verbindet den Port 3000 des Containers mit dem Port 3000 des Host-Systems.
    • mein-image: Gibt an, welches Image verwendet werden soll.

    Nach dem Start läuft der Container im Hintergrund und ist über den angegebenen Port erreichbar.

Wie verwaltet man Docker-Container?

  • Laufende Container anzeigen:

    1
    docker ps
  • Alle Container anzeigen:

    1
    docker ps -a
  • Container stoppen:

    1
    docker stop mein-container
  • Container starten:

    1
    docker start mein-container
  • Container löschen:

    1
    docker rm mein-container
  • Alternative Verwaltungstools:

    Neben den Docker-Befehlen gibt es auch grafische Tools wie Portainer, die eine benutzerfreundliche Oberfläche zur Verwaltung von Containern, Images, Netzwerken und Volumes bieten. Portainer ist besonders hilfreich für Einsteiger oder für die Verwaltung komplexer Docker-Umgebungen.

Wie löscht man Docker-Images?

  • Alle Images anzeigen:

    1
    docker images
  • Ein Image löschen:

    1
    docker rmi mein-image

Tipps

  • Nutze docker-compose, um mehrere Container einfach zu verwalten.
  • Halte deine Images klein, indem du unnötige Dateien und Abhängigkeiten vermeidest.
  • Scanne regelmäßig deine Images auf Sicherheitslücken.
  • Versioniere deine Dockerfile, um Änderungen nachverfolgen zu können.

Fazit

Docker ist ein mächtiges Tool, um Anwendungen in Containern zu isolieren und bereitzustellen. Mit den richtigen Best Practices kannst du die Vorteile von Docker optimal nutzen und deine Entwicklungs- und Produktionsumgebungen effizienter gestalten.