No description
Find a file
Kevin Heyer c661cc0a0c
All checks were successful
/ image (push) Successful in 14m28s
/ lint (push) Successful in 3m41s
Add iac-docker: Docker CE host
Docker CE with the Compose and Buildx plugins from Docker's APT source
(iac-core/apt/docker-ce.sources). Engine and CLI are held and versioned
by iac_version; daemon.json is written once with log rotation and
live-restore. The smoke test starts a container from a local image.

Tested: lint, dev container twice (second run changed=1), update
29.8.2 -> 29.9.1, image build step (IAC_BUILD=1) of the app tasks.
The container check needs a non-overlay /var/lib/containerd in the dev
container (tmpfs).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 06:41:52 +02:00
.forgejo/workflows Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
files Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
handlers Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
tasks Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
templates Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
tests Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
.clinerules Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
.cursorrules Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
.windsurfrules Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
AGENTS.md Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
CHANGELOG.md Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
CLAUDE.md Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
GEMINI.md Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
iac.json Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00
README.md Add iac-docker: Docker CE host 2026-10-15 06:41:52 +02:00

iac-docker

Docker Engine mit Compose und Buildx – ein Host für eigene Container – als LXC oder VM auf Proxmox VE, auf Debian 13. Teil von iac.

Installation (auf der Proxmox-Node)

bash -c "$(curl -fsSL https://iac.heyer.systems/docker/ct.sh)"   # LXC
bash -c "$(curl -fsSL https://iac.heyer.systems/docker/vm.sh)"   # VM

Ohne Dialog: IAC_NONINTERACTIVE=1 und var_*-Variablen – am einfachsten mit dem Generator auf https://iac.heyer.systems/apps/docker/.

Standard: 2 CPU, 2 GiB RAM, 20 GiB Disk (LXC) bzw. 32 GiB (VM). Images und Volumes brauchen schnell Platz – die Disk nach Bedarf größer wählen.

LXC oder VM? Der LXC ist unprivilegiert mit nesting=1 – Docker teilt sich dort den Kernel mit dem Proxmox-Host. Für Container, die mehr vom Kernel wollen (--privileged, eigene Kernel-Module), oder für eine klare Trennung vom Host die VM nehmen.

Zugang

Kein Web-UI und kein Login: Verwaltet wird als root per SSH (wie jeder iac-Gast).

ssh root@<ip>
docker ps
docker compose -f /opt/<projekt>/compose.yaml up -d

Wo die Compose-Projekte liegen, ist frei – iac legt keine an.

Aufbau

Docker docker-ce, docker-ce-cli, containerd.io, docker-compose-plugin, docker-buildx-plugin aus dem APT-Repository von Docker (download.docker.com, Schlüssel 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 in iac-core gepinnt)
Konfiguration /etc/docker/daemon.json – iac schreibt sie nur, solange es sie nicht gibt: Log-Treiber local (rotiert selbst), live-restore (Container laufen weiter, wenn dockerd neu startet, z. B. beim Update). Danach gehört die Datei dem Admin (Registry-Mirror, Adress-Pools, …); nach einer Änderung systemctl restart docker
Daten Images, Container und Volumes in /var/lib/docker und /var/lib/containerd
Logs docker logs <container>, journalctl -u docker

Firewall und veröffentlichte Ports

Die iac-Firewall (/etc/nftables.conf) filtert nur Verbindungen zum Gast selbst. Ports, die ein Container mit -p 8080:80 bzw. ports: in Compose veröffentlicht, leitet Docker an der Firewall vorbei weiter – sie sind für alle erreichbar, die den Gast erreichen. Beim Neuladen der iac-Firewall bleiben die Regeln von Docker erhalten.

  • Nur lokal (z. B. hinter einem Reverse-Proxy im selben Gast): -p 127.0.0.1:8080:80.
  • Einschränken nach Quell-Netz: Regeln in der Kette DOCKER-USER (iptables -I DOCKER-USER …).

Update (im Gast)

update

docker-ce und docker-ce-cli sind per dpkg festgehalten: Das Debian-Upgrade von update lässt sie aus, danach installiert iac die neueste Version aus dem Repository von Docker. containerd.io und die Plugins kommen mit dem Debian-Upgrade. Dank live-restore laufen die Container dabei weiter. Die Images der Container aktualisiert iac nicht – das bleibt bei docker compose pull.

Selbsttest (im Gast)

bash /var/lib/iac/src/core/bin/iac-smoke

Prüft neben dem Dienst: dockerd antwortet, live-restore aktiv, Compose und Buildx vorhanden, Engine und CLI festgehalten, und ein Container startet (aus einem lokal erzeugten Image, ohne Internet).