ubuntuusers.de

Docker

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Docker 🇬🇧 ist ein Entwicklerwerkzeug zur Anwendungsbereitstellung. Mit ihm lassen sich definierte Umgebungen erzeugen und durch Virtualisierung universell einsetzen.

Eine populäre Alternative für Docker stellt Podman dar, welches viele Docker-Funktionen unterstützt und einige Vorteile bietet. So können Container in sog. "Pods" zusammengefasst werden, was für dezentralisierte Anwendungen interessant ist. Außerdem werden die Container per Systemaufruf gestartet und laufen im Userspace, während Docker seine Aufgaben an mit Root-Rechten ausgestattete Hintegrunddienste delegiert, was ein potentielles Sicherheitsrisiko birgt.

Installation

Die Ubuntu-Distribution stellt inoffizielle Docker-Pakete bereit, die mit den offiziellen Paketen von Docker in Konflikt geraten können. Sie müssen ggf. vor Installation der offiziellen Version von Docker Engine deinstalliert werden.

Die inoffiziellen Pakete, die deinstalliert werden müssen, sind:

docker.io docker-compose docker-compose-v2 docker-doc podman-docker

Außerdem hängt Docker Engine von containerd und runc ab. Docker Engine bündelt diese Abhängigkeiten in einem Paket: containerd.io. Wenn containerd oder runc zuvor installiert wurde, müssen sie deinstalliert werden, um Konflikte mit den Versionen zu vermeiden, die mit Docker Engine verbunden sind.

Dazu muss folgender Befehl ausgeführt werden:

sudo apt-get remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc 

Um die Fremdquelle zu authentifizieren, muss man den Signierungsschlüssel herunterladen ⮷ und in der Paketverwaltung hinzufügen. Alternativ dazu kann man auch im Terminal den folgenden Befehl ausführen:

wget -q -O "-" https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 

Um aus der Fremdquelle zu installieren, muss man die folgenden Paketquellen freischalten:

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.

deb https://download.docker.com/linux/ubuntu VERSION main

Für die Docker Community Edition sind folgende Pakete zu installieren. [1]

  • docker-ce containerd.io

Befehl zum Installieren der Pakete:

sudo apt-get install docker-ce containerd.io 

Möchte man Docker ohne sudo starten, so muss man sich mit folgenden Befehlen [2] mit Root-Rechten [3] zur Gruppe docker hinzufügen:

sudo groupadd docker
sudo usermod -aG docker $USER 

Es ist auch möglich, Docker ohne Root-Rechte laufen zu lassen, was allerdings mit einigen Einschränkungen der Funktionsweise einhergeht. Siehe dazu die Docker-Dokumentation, "Rootless mode" 🇬🇧.

Soll Docker bei jedem Systemstart von systemd mit gestartet werden, so kann man folgende Befehle [2] mit Root-Rechten [3] ausführen:

sudo systemctl enable docker.service
sudo systemctl enable containerd.service 

Anschließend startet man den Rechner neu.

Benutzung

Test

Zur Prüfung ob alles korrekt eingerichtet ist, kann mit folgendem Befehl [2] eine Instanz mit Hallo-Welt-Programm gestartet werden.

docker run hello-world 

Images

Mit dem folgenden Befehl [2] kann man sich vorgefertigte Varianten zum Herunterladen auflisten lassen.

docker search ubuntu 

Wir laden testweise mit folgendem Befehl das offizielle Image herunter.

docker pull ubuntu 

Mit folgendem Befehl können wir alle auf dem System verfügbaren Abbilder ansehen.

docker images 

Um einen Container aus dem Abbild zu starten und in die Root-Konsole zu springen, geben wir Folgendes ein:

docker run -it ubuntu 

In einem zweiten Terminalfenster geben wir folgenden Befehl ein, um die aktiven Container anzuzeigen.

docker ps 

Um auch den bereits beendeten Hallo-Welt-Container anzuzeigen, können wir folgenden Parameter ergänzen.

docker ps -a 

Mit dem folgenden Befehl gefolgt von der Container-ID oder dem Namen können wir den Container beenden

docker stop <Container ID bzw. Name> 

und mit dem Äquivalent auch wieder starten.

docker start <Container ID bzw. Name> 

Um den Container wieder aus dem System zu löschen, geben wir Folgendes ein:

docker rm <Container ID bzw. Name> 

Dockerfile

Ein wichtiger Verwendungszweck ist das automatisierte Einrichten von Container-Images. Dafür werden Baupläne erstellt und in einem sogenannten Dockerfile abgespeichert.

Beispielhaft soll die Startseite des Wiki heruntergeladen und von einem Webserver bereitgestellt werden.

Hierfür folgende Datei mit dem Dateinamen Dockerfile anlegen. [5]

# Verwende Apache 2 Webserver und Ubuntu als Basis.
FROM ubuntu/apache2:latest

# Paketliste aktualisieren und Programme installieren.
RUN apt-get update && apt-get install -y wget && apt-get clean

# Erstelle ein Verzeichnis zum Ablegen der HTML-Dateien.
RUN mkdir -p /var/www/html/wiki

# Die Startseite von des ubuntuusers.de Wiki herunterladen und im Apache Verzeichnis ablegen.
RUN wget --no-parent --convert-links --adjust-extension --page-requisites \
    https://wiki.ubuntuusers.de/ -P /var/www/html/wiki

# Setze die heruntergeladene Startseite als Standardseite ein.
RUN mv /var/www/html/wiki/wiki.ubuntuusers.de/index.html /var/www/html/

# Den Standard Webserver Port öffnen.
EXPOSE 80

# Starte den Webserver im Vordergrund.
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

Folgenden Befehl [2] in dem Ordner ausführen, wo das Dockerfile gespeichert wurde.

docker build -t ubuntuusers-image . 

Zum Starten des frisch erstellten Abbildes folgenden Befehl eingeben. Diesmal erhält der Container einen Namen, um ihn besser wiederzufinden, und eine Portfreigabe wird konfiguriert.

docker run --name ubuntuusers-mirror -d -p 8080:80 ubuntuusers-image 

Unter http://localhost:8080/ wird nun die Seite von dem Apache-Webserver innerhalb des Containers bereitgestellt.

Zum Beenden folgenden Befehl eingeben:

docker stop ubuntuusers-mirror 

Diese Revision wurde am 30. April 2025 19:27 von Matthias erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Server