Backup engine běží v izolovaném Docker kontejneru, ale musí:
1. Detekovat a zálohovat PostgreSQL running v jiných kontejnerech na stejném hostu
2. Přistoupit na PostgreSQL running přímo na hostu (mimo Docker)
3. Poskytnout standardizované provozní rozhraní pro adminy — start, stop, status, logy, ad-hoc příkazy
Bez explicitního řešení těchto tří bodů by backup kontejner byl izolovaný a nemohl plnit svoji funkci.
Zvažované alternativy pro inter-container přístup:
A) Custom Docker network bridge — komplikuje networking, vyžaduje konfiguraci per kontejner
B) Docker socket mount (zvoleno) — přímý přístup k Docker API, jednoduché a standardní
C) Kubernetes-style sidecar — overkill mimo K8s prostředí
Přístup k ostatním kontejnerům přes:
-v /var/run/docker.sock:/var/run/docker.sock
Backup kontejner může docker ps, docker exec, docker inspect — detekuje a zálohuje DB kontejnery.
PostgreSQL na hostu je dostupný přes:
--add-host host.docker.internal:host-gateway
BREW_PGHOST=host.docker.internal
Kontejner se připojí na host PG jako by byl na stejné síti. Vyžaduje správnou konfiguraci listen_addresses a pg_hba.conf na hostu.
scripts/)Standardizované operace jsou zapouzdřeny v bash wrapper skriptech:
start-backup-container.sh — kompletní lifecycle: preflight, volume creation, restic init, startbackup-container-status.sh — rychlý přehled stavu kontejneru a posledního běhubackup-container-logs.sh — zobrazí scheduler logybackup-container-daily.sh — spustí denní běh ad-hocbackup-container-backup.sh — spustí pouze primary zálohubackup-container-report.sh — zobrazí detection + backup reportbackup-container-retention-report.sh — retention přehledbackup-container-storage-report.sh — storage usagebackup-container-shell.sh — interaktivní shell v kontejnerubackup-container-daily-recover.sh — stale lock recovery (viz ADR-0009)Pozitivní:
Negativní:
docker.sock mount dává backup kontejneru silná runtime oprávnění na hostu — ekvivalent root přístupu k Docker daemonu. Kontejner přistupuje k hostitelskému Docker daemonu přes socket (nikoli skutečný Docker-in-Docker s vlastním daemonem) — umožňuje docker ps, docker exec na ostatní kontejnery hostu. Toto je vědomé bezpečnostní riziko, přijato jako nutný kompromis pro detekci DB kontejnerůlisten_addresses, pg_hba.conf a případně firewall pravidlaFollow-up (TBD):
| Version | Date | Author | Note |
|---|---|---|---|
| 1.0.2 | 2026-04-09 | claude-sonnet-4-6 | Follow-up sekce doplněna o reference na ADR-0011 (sidecar privilege isolation) a ADR-0012 (VM hardening guidelines). Přidány ADR-0011 a ADR-0012 do related_docs. |
| 1.0.1 | 2026-04-09 | claude-sonnet-4-6 | Opravena terminologie: 'DinD source detection' nahrazeno přesným popisem — kontejner přistupuje k hostitelskému Docker daemonu přes socket mount, nikoli skutečný Docker-in-Docker s vlastním daemonem. |
| 1.0.0 | 2026-04-09 | david.sorf + claude-sonnet-4-6 | Migrace z doc/ADR/ADR-0008-container-runtime-connectivity-and-ops-wrappers.md do DAK JSON formátu. Rozšířeno o alternativy A/B/C, kompletní seznam wrapper skriptů, security rationale pro docker.sock a follow-up items. |