Docker unter Proxmox installieren
Docker als Container-Plattform und Proxmox als Virtualisierungsplattform geben ein hervorragendes und produktives Gespann ab. In diesem Artikel wird gezeigt, wie ein Docker-Host als Linux-Container (LXC) unter Proxmox bereitgestellt wird.
Mit diesem Docker-Host sind Sie in der Lage sehr schnell und flexibel beliebige Dienste und Anwendungen auf Ihrem Server bereitzustellen.
LXC-Container als Docker-Host einrichten (Debian)
Als Basis für den Container in Proxmox wird ein Debian-Image verwendet und die Einrichtung des Containers Schritt für Schritt gezeigt.
Erstellen Sie einen neuen, unprivilegierten Container in Proxmox und folgen Sie den hier beschriebenen Einstellungen:

Wählen Sie das Debian-Template aus. Sofern dies noch nicht in Ihrer Proxmox-Umgebung vorhanden ist, laden Sie dieses zuvor in Ihrem Storage über CT Templates > Templates herunter.

Die Größe der Root-Disk hängt von Ihren persönlichen Bedürfnissen und den zu installierenden Docker-Anwendungen ab. Es empfiehlt sich, die Docker-Images im Container abzulegen (diese können Sie bei Bedarf ja wieder herunterladen).
Für die veränderlichen Konfigurations- und Nutzdaten werden wir nach der Installation einen externen Storage in den Container einbinden, um so
- On the fly Container-Konfigurationen durchführen zu können und
- die Daten in einem Backup-Prozess sichern zu können.
Wie dies erfolgt, zeigen wir in einem separaten Artikel.

Auch die Anzahl der Cores hängt vom Einsatzzweck und den verwendeten Anwendungen ab. Zwei Cores sind aber für einen normalen Betrieb völlig ausreichend.

Dasselbe gilt für den Speicher (RAM) des Containers. Zum Start sind zwei Gigabyte völlig ausreichend.

In den Netzwerkeinstellung konfigurieren Sie die Einstellungen so, wie es in Ihre Umgebung passt.

Auf alle Fälle sollte die IP-Adresse des Docker-Hosts statisch sein, wir legen dies allerdings über den Router fest und nicht hier.
Anschließend den Container erstellen lassen, aber noch nicht starten, da noch Einstellungen im Container zur Virtualisierung festgelegt werden müssen.
Dazu in Proxmox den Container auswählen und unter Optionen die Einstellung „Features“ doppelklicken. Hier folgende Optionen auswählen:

Die Auswahl bestätigen und anschließend den Container starten.
Ist der Container gestartet, einloggen und Docker unter Proxmox installieren.
Docker im Container installieren
Zuerst aktualisieren wir die Paketquellen mit
apt-get update
Anschließend werden notwendige Pakete installiert, um das Docker-Repository über HTTPS zu nutzen
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Den offiziellen GPG-Key von Docker dem System hinzufügen
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
Die erfolgreiche Prüfung des GPG-Keys sollte wie folgt aussehen:
root@DockerTest:~# apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
Anschließend wird das stable-Docker-Repository hinzugefügt:
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
Jetzt nochmal die Paketquellen aktualisieren:
apt-get update
Und dann Docker installieren, wobei die neue Container-Runtime containerd verwendet wird:
apt-get install docker-ce docker-ce-cli containerd.io
Wenn alles erfolgreich installiert wurde, sollte es ungefähr so aussehen:
root@DockerTest:~# service docker status
* docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-02-11 21:47:31 UTC; 27s ago
Docs: https://docs.docker.com
Main PID: 8347 (dockerd)
Tasks: 9
Memory: 101.8M
CGroup: /system.slice/docker.service
`-8347 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.676485035Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.677331494Z" level=info msg="Loading containers: start."
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.850581966Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. D
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.851135398Z" level=warning msg="unable to disable IPv6 router advertisement" error="open /proc/sys/ne
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.851159374Z" level=warning msg="unable to disable IPv6 router advertisement" error="open /proc/sys/ne
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.945945308Z" level=info msg="Loading containers: done."
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.990029740Z" level=info msg="Docker daemon" commit=46229ca graphdriver(s)=vfs version=20.10.3
Feb 11 21:47:30 DockerTest dockerd[8347]: time="2021-02-11T21:47:30.990156263Z" level=info msg="Daemon has completed initialization"
Feb 11 21:47:31 DockerTest systemd[1]: Started Docker Application Container Engine.
Feb 11 21:47:31 DockerTest dockerd[8347]: time="2021-02-11T21:47:31.078816699Z" level=info msg="API listen on /var/run/docker.sock"
Mit der Installation von Docker unter Proxmox sind jetzt die Voraussetzungen für einen sehr flexiblen Docker-Host geschaffen worden. Diesen werden wir in weiterführenden Beiträgen um Standarddienste erweitern, um die Verwaltung und Konfiguration weiterer Dienste und Anwendungen so einfach wie möglich durchführen zu können.
Dazu gehören unter anderem Portainer und ein Reverse Proxy (nginx).
Hardware für das eigene Homelab
Wer in einem eigenen Homelab die hier gezeigten Beispiele ausprobieren und damit lernen möchte, dem empfehlen wir zum Einstieg preisgünstige aber leistungsstarke Hardware, wie zum Beispiel die Minirechner der Firma Minisforum, die sich ideal als Heimserver eignen.
Pingback: Portainer unter Docker installieren - kayomo GmbH
„Wie dies erfolgt, zeigen wir in einem separaten Artikel.“
Kommt der Artikel noch? Würde mich sehr interessieren.
Danke.
Hallo,
vielen Dank für das Interesse.
Ein kleiner Artikel dazu kommt heute noch oder morgen – wie ich es vor Weihnachten schaffe 😉
Viele Grüße und ein frohes Fest!
Hallo Daniel,
und hier ist der Artikel:
https://kayomo.de/blog/proxmox-docker-persistenten-storage-in-container-einbinden/
Danke für die Anleitung.
Ich bin ihr gefolgt aber bekomme den Fehler
docker run -d -p 8000:8000 -p 9000:9000 –name=portainer –restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
docker: Error response from daemon: using mount program fuse-overlayfs: fuse: device not found, try ‚modprobe fuse‘ first
fuse-overlayfs: cannot mount: No such file or directory
: exit status 1.
modprobe fuse funktioniert natürlich nicht, weil im LXC kein Kernel installiert ist. Haben sie Ideen, was das Problem ist?
service docker status
* docker.service – Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-01-29 09:56:28 UTC; 3s ago
TriggeredBy: * docker.socket
Docs: https://docs.docker.com
Main PID: 1617 (dockerd)
Tasks: 8
Memory: 26.7M
CPU: 132ms
CGroup: /system.slice/docker.service
`-1617 /usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock
Jan 29 09:56:27 cloud dockerd[1617]: time=“2022-01-29T09:56:27.935940080Z“ level=info msg=“ccResolverWrapper: sending u>
Jan 29 09:56:27 cloud dockerd[1617]: time=“2022-01-29T09:56:27.935955768Z“ level=info msg=“ClientConn switching balance>
Jan 29 09:56:27 cloud dockerd[1617]: time=“2022-01-29T09:56:27.937472548Z“ level=info msg=“[graphdriver] using prior st>
Jan 29 09:56:27 cloud dockerd[1617]: time=“2022-01-29T09:56:27.953930577Z“ level=info msg=“Loading containers: start.“
Jan 29 09:56:28 cloud dockerd[1617]: time=“2022-01-29T09:56:28.023268152Z“ level=info msg=“Default bridge (docker0) is >
Jan 29 09:56:28 cloud dockerd[1617]: time=“2022-01-29T09:56:28.052922866Z“ level=info msg=“Loading containers: done.“
Jan 29 09:56:28 cloud dockerd[1617]: time=“2022-01-29T09:56:28.058508978Z“ level=info msg=“Docker daemon“ commit=459d0d>
Jan 29 09:56:28 cloud dockerd[1617]: time=“2022-01-29T09:56:28.058551403Z“ level=info msg=“Daemon has completed initial>
Jan 29 09:56:28 cloud systemd[1]: Started Docker Application Container Engine.
Jan 29 09:56:28 cloud dockerd[1617]: time=“2022-01-29T09:56:28.074052755Z“ level=info msg=“API listen on /run/docker.so>
Hi,
ich musste in den Features des LXC noch FUSE aktivieren. Jetzt geht es.
Grüße
Hallo Coji,
habe Deinen Beitrag erst jetzt gesehen, aber ja, das ist dann die Lösung 🙂
Wobei ich mich frage, warum das bei mir ohne gesetzte FUSE funktioniert?
Viele Grüße
vielleicht irgendwo bereits als default aktiviert?
Pingback: Kostenlose Teamviewer Alternative - RustDesk - kayomo GmbH