Kategorie: Programmieren

  • Docker unter Ubuntu 25.04

    docker Logo

    Eine Einführung zur Installation von Docker auf einem Ubuntu Betriebssystem.

    Um einen Docker- Container erstellen zu können, muss zunächst die Docker Software – genauer die Docker Engine – selbst auf dem Computer installiert werden.

    Für unser Beispiel verwenden wir die Community Edition Docker CE.

    Für die Installation gibt es drei verschiedene Möglichkeiten:

    • Installation der Software Docker-Desktop, einer grafischen Benutzeroberfläche zur Verwaltung der Container, die auch alle erforderlichen Werkzeuge mitliefert.
    • Die Installation über ein Terminal
    • Installation mit einem Installations-Skript, nur für Testumgebungen empfohlen

    Wir nutzen die zweite Variante über ein Terminal. Alle hierzu erforderlichen Schritte sind sehr gut dokumentiert auf der Website des Herstellers.

    Repository

    Bevor Sie die Docker-Engine zum ersten Mal auf einem Host-Rechner installieren, müssen Sie das Docker apt-Repository einrichten. Danach können Sie Docker über das Repository installieren und aktualisieren.

    Exkurs

    apt-Repository:

    Ein Repository ist eine Art Software-Archiv, das meist auf einem Server vorgehalten wird.

    APT (Advanced Package Tool) ist ein Werkzeug, mit dem man auf diese Repositories zugreift, um Software-Pakete) zu installieren, zu aktualisieren oder zu entfernen.

    GPG-Schlüssel:

    Der GPG-Schlüssel stellt sicher, dass das Repository, von dem die Pakete heruntergeladen werden, echt ist und nicht von einem Angreifer manipuliert wurde. Er garantiert, dass die heruntergeladenen Pakete nicht während der Übertragung oder auf dem Server verändert wurden.

    Jedes Repository hat ein Schlüsselpaar, bestehend aus einem öffentlichen und einem privaten Schlüssel. Der Repository-Betreiber signiert die Paketdateien mit seinem privaten Schlüssel. APT überprüft die digitale Signatur des Pakets mit dem öffentlichen Schlüssel des Repositorys. Nur wenn die Signatur gültig ist, wird das Paket installiert. Andernfalls wird die Installation abgebrochen.

    Stellen Sie zunächst sicher, dass Ihr Betriebssystem auf dem aktuellen Stand ist:

    sudo apt update

    Den GPG-Schlüssel importieren:

    sudo apt install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc

    Das Repository hinzufügen:

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

    Und nochmals aktualisieren:

    sudo apt update

    Installation

    Nun folgt die Installation aus dem neu hinzugefügten Repository:

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

    Ohne Angabe einer speziellen Versionsnummer wird die aktuelle „Stable“-Version installiert.

    Copy & Paste

    Screenshot der Docker Website mit der Installationsanleitung in englischer Sprache.

    Sie können alle erforderlichen Befehle direkt von der Herstellerseite kopieren. Kopieren Sie dazu jeweils den gesamten Codeblock über die Schaltfläche „Copy“ und fügen Sie alle Befehle des Code-Blocks im Terminal ein mit der Tastenkombination

    Shift + Strg + V

    oder über die Option „Einfügen“ des Kontextmenüs.

    Screenshot Ubuntu Terminal mit den eingefügten Befehlen des ersten Code-Blocks der Installationsanleitung.

    Installation überprüfen

    Für einen ersten Test erzeugen Sie nun einen Container aus einem fertigen Image:

    sudo docker run hello-world

    Dieser Docker Befehl führt das „hello-world“ Docker Image als Container aus. Zuerst wird geprüft, ob das Image lokal vorhanden ist. Wenn nicht, wird es von Docker Hub heruntergeladen. Anschließend wird von diesem Image ein Container gebaut und gestartet. Innerhalb des Containers gibt ein kleines Programm die Meldung „Hello from Docker!“ im Terminal aus und stoppt dann automatisch.

    Screenshot Ubuntu Terminal: Start eines ersten Containers aus dem "hello-world"-Image und der Ausgabetest des Containers.

    Eine Übersicht über alle Docker-Befehle finden Sie in der Dokumentation: dockerdocs

    Exkurs: sudo

    Das sudo-Präfix ist für Docker-Befehle wie docker run hello-worlderforderlich, weil der Docker-Daemon (der Hintergrunddienst für die Verwaltung von Containern und Images) standardmäßig mit Root-Rechten läuft und auf den Unix-Socket, der für die Kommunikation mit dem Daemon benötigt wird, nur mit Root-Rechten oder mit expliziter Berechtigung (z.B. durch die Docker-Benutzergruppe) zugegriffen werden kann.

    Ohne sudo versucht der Benutzer, den Daemon ohne die erforderlichen Berechtigungen zu verwenden, was zu Fehlern führt.

    Alternativ können auch nicht privilegierte Benutzer der Gruppe „docker” hinzugefügt werden, um ihnen die Ausführung von Docker-Befehlen zu ermöglichen. Dies kann jedoch ein Sicherheitsrisiko darstellen, da Mitglieder der Docker-Benutzergruppe ähnliche Rechte wie root haben.

    Container erstellen

    Um einen Container auf Ihrem Computer zu erzeugen, können Sie entweder ein fertiges Docker-Image vom Docker-Hub nutzen (wie das oben verwendete „hello-world“-Image) oder in einem Dockerfile selbst festlegen, aus welchen Komponenten der Container bestehen soll.

    Ein Dockerfile ist eine Textdatei, die Anweisungen enthält, um ein einzelnes Docker-Image zu erstellen. Es definiert, wie ein Container aufgebaut wird, z.B. welches Basis-Image verwendet wird, welche Dateien kopiert werden und welche Befehle ausgeführt werden sollen.

    Docker Compose

    Docker Compose hingegen ist ein Werkzeug, das eingesetzt wird, um Anwendungen zu definieren und zu betreiben, die aus mehreren Containern bestehen. Es verwendet eine YAML-Datei, um die verschiedenen Dienste (Container), ihre Abhängigkeiten, Netzwerke und andere Konfigurationen zu beschreiben. Mit Docker Compose kann man eine komplette Anwendung mit mehreren Containern mit einem einzigen Befehl starten und verwalten.

    Dockerfile: erzeugt ein einzelnes Image.

    Docker Compose: definiert und orchestriert mehrere Container und deren Zusammenspiel.

    Ausblick

    In einem unserer nächsten Beiträge erklären wir, wie Sie WordPress mit Docker-Compose als Testumgebung auf Ihrem Computer einrichten.