Contenedores · Imágenes · Compose · Orquestación
Docker — Motor de contenedores¶
El motor de contenedores que ejecuta la mayoría de los servicios de SmallCountry. Cada LXC (contenedor ligero de Proxmox) contiene Docker, y cada servicio se despliega con Docker Compose. Las imágenes se cachean localmente en el registro OCI de Forgejo para no depender de Docker Hub.
Como usuario¶
No se interactúa con Docker directamente. Sería la capa invisible que hace funcionar cada servicio. Si Docker funciona, tus fotos, tus archivos y tus películas funcionan.
Integración con otros servicios de SmallCountry¶
| Servicio | Relación |
|---|---|
| Forgejo | Registro OCI pull-through: todas las imágenes Docker se cachean localmente en Forgejo. Los nodos nunca descargan de Docker Hub |
| Portainer | Panel de gestión de contenedores. Solo lectura y reinicio de emergencia |
| Ansible | Los playbooks de Ansible definen y despliegan los docker-compose.yml de cada servicio |
| Proxmox VE | Docker corre dentro de cada LXC gestionado por Proxmox |
| Todos los LXCs | Cada LXC (excepto los más ligeros) contiene Docker para ejecutar su servicio |
Servicios que lo hacen posible¶
- Docker Engine — motor de contenedores
- Docker Compose — orquestación de múltiples contenedores por servicio
- Forgejo — registro OCI local de imágenes
- ZFS — almacenamiento persistente de volúmenes Docker
Para el administrador (diseño previsto)
| Ubicación | Dentro de cada LXC que ejecuta servicios |
| Portainer | LXC 132, acceso en https://portainer.sc |
Comandos útiles: docker ps, docker compose up -d, docker compose down, docker logs <servicio> --tail 50. Portainer en LXC 132 muestra todos los contenedores de todos los LXCs (agentes Portainer en cada LXC). Nunca modificar configuración desde Portainer — solo desde Ansible.
Las imágenes nunca se descargan directamente de Docker Hub. El registro OCI de Forgejo actúa como mirror pull-through: la primera descarga va a internet, las siguientes se sirven desde la caché local.
Para el arquitecto (diseño previsto)
Docker dentro de LXC¶
Proxmox VE (Ra)
└── LXC 150 (Nextcloud)
│ └── Docker
│ ├── nextcloud:29.0.4-apache
│ ├── postgres:16.3
│ └── redis:7.2.5
├── LXC 151 (Immich)
│ └── Docker
│ ├── immich-server
│ ├── immich-machine-learning
│ ├── postgres (pgvector)
│ └── redis
└── LXC 160 (n8n)
└── Docker
└── n8n + postgres
Cada servicio se define en un docker-compose.yml versionado en Forgejo. Ansible lo despliega con el rol correspondiente. El registro OCI de Forgejo cachea todas las imágenes. Patrón: docker pull → desde Forgejo Registry (offline si ya está cacheada). Las imágenes pasan cuarentena (60/14/7 días según Tier) antes de producción.
| Componente | Path |
|---|---|
| Rol Ansible | roles/docker/ |
| Repo Forgejo | infra-core/ |
| Ficha versionada | docs/fichas/sistemas/docker.md |
Secciones relacionadas¶
- Guía de estilo: Clasificación de estado
- Principio 1: Fuente única de verdad
- ADR-002: Tiers de criticidad