Nach wie vor verwenden wir, für die meisten Anleitungen, Docker zusammen mit Docker Compose. Inzwischen ist von Docker Compose Version 2 erschienen. Mailcow hat bereits in einem der letzten Updates angekündigt zukünftig nur noch auf Docker Compose v2 zu setzten. Also ist es an der Zeit, dass wir uns dem hier widmen.
0. Versionierung
Datum | Änderungen |
---|---|
21.05.2023 | Angepasst an aktuellen Stand |
27.06.2022 | Initialer Release |
1. Voraussetzung
Um Docker zu installieren benötigen wir die 64-Bit-Version von Ubuntu 22.04 LTS. Die Docker Engine unterstützt auch x86_64
(bzw. amd64
), armhf
, arm64
, und s390x
.
2. Deinstallieren von alten Versionen
Im nächsten Schritt entfernen wir die ggf. vorhandenen alten Versionen von Docker.
Keine Sorge! Die Inhalte von /var/lib/docker/
, einschließlich Images, Container, Volumes und Netzwerke, bleiben uns erhalten.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Wenn es sich um eine frische Ubuntu-Installation handelt wird uns der Befehl einen Fehler auswerfen, da nichts installiert ist. Diesen Fehler können wir einfach ignorieren.
3. Docker-Repository hinzufügen
3.1. Alte Sourcenliste entfernen
Um uns nun die aktuelle Docker-Version installieren zu können müssen wir erst mal das aktuelle Docker-Repository hinzufügen. Dazu löschen wir erst mal eventuell alte vorhandene Repositories:
sudo rm /etc/apt/sources.list.d/docker.list
Wenn es sich um eine frische Ubuntu-Installation handelt wird uns der Befehl einen Fehler auswerfen, da diese Datei nicht vorhanden ist. Diesen Fehler können wir einfach ignorieren.
3.2. Grundvoraussetzungen überprüfen
Je nach Systemzustand kann es sein, dass wir Ubuntu erstmal in die Lage versetzten müssen sich die aktuellen Pakete via HTTPS zu ziehen. So führen wir folgenden System aus um sicher zu stellen, dass die Grundvoraussetzungen alle vorhanden sind oder ggf. installiert werden.
Aktuelle Paketliste aktualisieren
sudo apt update
Alle notwendigen Pakete installieren:
sudo apt install ca-certificates curl gnupg
Normal sollten wir alle Grundvoraussetzungen selbst bei einer Minimal-Version erfüllen.
3.3. Schlüssel hinzufügen
In diesem Schritt laden wir uns den aktuellen PGP-Schlüssel von Docker herunter und stellen ihn auf unserer Maschine zur Verfügung.
Verzeichnis anlegen:
sudo install -m 0755 -d /etc/apt/keyrings
Schlüssel holen und in das Verzeichnis einfügen:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Rechte vergeben:
sudo chmod a+r /etc/apt/keyrings/docker.gpg
3.4. Repository hinzufügen
Nun fügen wir noch das aktuelle Repository von Docker hinzu:
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. Docker und Docker Compose installieren
Jetzt haben wir alle Vorraussetzungen geschaffen um die aktuellste Version von Docker zu installieren. Zu erst aktualisieren wir nochmals die Paketliste:
sudo apt update
Und installieren dann Docker und Docker Compose:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Version 2 von Docker Compose versteckt sich hinter dem Paket docker-compose-plugin
.
sudo docker --version && docker compose version
jonathan@xxx:~$ docker --version && sudo docker compose version Docker version 20.10.17, build 100c701 Docker Compose version v2.6.0
5. Nach der Installation
5.1. Nicht-Root-Benutzer
Grundsätzlich wird Docker an den root
-User gebunden. Also müssten wir nun immer mit sudo
arbeiten. Allerdings möchten wir eigentlich Docker auch durch einen Nicht-Root-Benutzer ausführen um uns die ständige Passworteingabe zu sparen.
Wichtiger Hinweis: Die Docker-Gruppe gewährt die gleichen Rechte wie der Benutzer root
. Das kann sich auf die Sicherheit des Systems auswirken.
Wir erstellen eine docker
Gruppe:
sudo groupadd docker
In der Regel sollte diese bereits existieren. Dann fügen wir unseren Benutzer dieser Gruppe hinzu:
sudo usermod -aG docker $USER
Einmal ausloggen, wieder einloggen und testen via:
docker run hello-world
5.2. Docker mit dem System starten
Die meisten aktuellen Linux-Distributionen (RHEL, CentOS, Fedora, Debian, Ubuntu 16.04 und höher) verwenden systemd, um zu verwalten, welche Dienste beim Booten des Systems gestartet werden. Unter Debian und Ubuntu ist der Docker-Dienst standardmäßig so konfiguriert, dass er beim Booten gestartet wird. Falls wir trotzdem mal diese Funktion manuel ausführen müssten.
Hinzufügen der Dienste zum Boot:
sudo systemctl enable docker.service sudo systemctl enable containerd.service
Deaktivieren des Dienstes beim Booten:
sudo systemctl disable docker.service sudo systemctl disable containerd.service
5.3. IPv6 für Docker aktivieren (optimal)
Wir werden uns darauf Einstellen, dass wir immer mehr mit IPv6 arbeiten und viele Serverangebote beinhalten bereits einen IPv6-Adressbereich. Diesen können wir auch für Docker anwenden. Aktuell funktioniert IPv6 bei Docker ausschlieslich auf Linuxmaschinen.
Konfigurationsdatei öffnen:
sudo nano /etc/docker/daemon.json
Inhalt um folgendes ergänzen:
{ "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" // IPv6-Bereich auf euren Bereich anpassen! }
Jetzt muss nur noch Docker die neue Konfiguration laden:
sudo systemctl reload docker
Nun können wir auch IPv6 Netzwerke innerhalb Docker verwenden. Zum Beispiel fragt Mailcow bei jedem Update ob man seine Konfiguration um IPv6 erweitern möchte. Das würde nun funktionieren.
6. Docker Compose v2
Selbstverständlich hat sich viel unter der Haube von Docker Compose getan. Die wichtigste Änderung für uns ist das der Befehl ohne -
auskommt!
docker compose up
Hab die Anleitung mittlerweile mehrmals durch, jedes mal auf einer frischen Ubuntu VM. Nach Kompletter Abarbeitung in der korrekten Reihenfolge kriege ich immer den gleichen Fehler. Bei:
ist die Ausgabe jedes Mal:
“no configuration file provided: not found”
Irgendwas mache ich falsch, bin aber noch nicht dahinter gekommen. Jemand eine Idee?
Ich hatte gerade das Problem, mit apt upgrade mein Ubuntu mal auf den neuesten Stand zu bekommen. Dabei wurde nach einem reboot auch der Kernel aktualisiert.
Alles schön und gut, aber Docker wollte auf Teufel komm raus nicht mehr laufen.
Nach langem Suchen bin ich durch “dockerd –debug” darauf gestoßen, dass er sich aufgrund der Bemerkung in “/etc/docker/daemon.json”
nicht mehr starten wollte. Lief bis jetzt ohne Problem, aber scheinbar ist da was umgebaut worden.
Wer das Problem auch hat, bei mir hat es geholfen, die komplette Bemerkung einfach aus der Datei zu löschen, und Docker ist wieder gelaufen als ob nichts wäre.
Nach Neustart geht Docker gar nicht mehr.
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
Mit der offiziellen Docker-Ubuntu-Anleitung hat das zuvor problemlos funktioniert. Hab diesmal Ubuntu neuinstalliert und direkt auf 22.04 Upgrade gemacht und dann die Docker-Anleitung von hier genommen.
Vielleicht liegt es an 5.1 da ich nicht wusste was mit “Einmal ausloggen, wieder einloggen” gemeint war bzw. wie man das macht. Ubuntu? Docker?
Hab danach einfach gesamten Server neugestartet mit sudo reboot.
Jetzt erst mal Ubuntu wieder neu installieren.
Guten Abend,
bekomme leider folgendes Problem mit der Anleitung:
Danke!
Super Anleitung, gerade eben getestet von einme cleanen Ubuntu Server 22.04.1 LTS
🙂
Danke
So macht das Dockern spaß.
Hallo, warum verwendst Du apt-get anstelle von apt?
https://itrig.de/index.php?/archives/2316-apt-vs.-apt-get-Was-ist-der-Unterschied.html
“Also ist es an der Zeit, dass wir uns dem hier widmen.”
Modern oder nicht modern?
Danke für die Anleitung.
VG
Thilo
Hallo Jonathan,
die obenstehende Anleitung habe ich auf meinen RPI4 durchgeführt die auch geklappt hat. IP6 habe ich ausgelassen. Da bei mir auch OMV6 läuft gab es danach ein Problem mit dem Docker aus dem OMV heraus. Der musste dort neu installiert werden. Jetzt gibt es jetzt Probleme bei der Aktualisierung. Sowohl im OMV selber als auch auf der Konsole. Siehe die letzten Zeilen nach sudo apt-get update. Danke für eine Rückmeldung
E: The repository ‘https://download.docker.com/linux/ubuntu bullseye Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.