- Shell 100%
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> |
||
|---|---|---|
| .forgejo/workflows | ||
| files | ||
| handlers | ||
| tasks | ||
| templates | ||
| tests | ||
| .clinerules | ||
| .cursorrules | ||
| .windsurfrules | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| GEMINI.md | ||
| iac.json | ||
| README.md | ||
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).