Sobre el proyecto
Baseimage-docker es una imagen base de Docker construida sobre Ubuntu y ajustada para su uso dentro de contenedores. Se publica como `phusion/baseimage` en Docker Hub y GHCR, y está pensada como punto de partida para tus propias imágenes.
El proyecto argumenta que Ubuntu estándar no está diseñado para contenedores: su init Upstart asume hardware real o virtualizado, y muchos casos límite de contenedores son fáciles de manejar incorrectamente. Baseimage-docker incluye las correcciones y herramientas de administración que considera necesarias.
Lo que incluye:
- Un proceso init correcto, `/sbin/my_init`, que recolecta procesos hijos huérfanos (evitando la acumulación de zombies) y reenvía SIGTERM a los hijos para que puedan apagarse limpiamente en lugar de ser eliminados con SIGKILL.
- runit como reemplazo de Upstart, para la supervisión de servicios y el reinicio automático de demonios que fallan.
- syslog-ng, que escucha solo localmente y reenvía mensajes a `docker logs`, además de logrotate.
- cron, y un servidor SSH deshabilitado por defecto que solo permite autenticación por clave.
- `setuser` para ejecutar comandos como otro usuario con un `$HOME` correcto, e `install_clean` para instalaciones apt que limpian cachés.
- Correcciones para incompatibilidades de APT con Docker.
Uso: establece `FROM phusion/baseimage:<VERSIÓN>` y `CMD ["/sbin/my_init"]`. Los demonios adicionales se añaden creando scripts `run` ejecutables en `/etc/service/<NOMBRE>`; runit los inicia y los reinicia al salir. Los scripts de arranque pueden colocarse en `/etc/my_init.d` (ejecutados en orden lexicográfico) o en `/etc/rc.local`, y deben salir con código 0.
Las variables de entorno pasadas mediante `docker run --env` o `ENV` en el Dockerfile son importadas por `my_init` desde `/etc/container_environment`, y luego se vuelcan a formatos shell y JSON para que servicios y scripts en cualquier lenguaje puedan leer los valores originales. El directorio es propiedad de root y está restringido al grupo `docker_env` por defecto, ya que los valores pueden ser sensibles. Los tiempos de espera para terminar hijos pueden ajustarse con `KILL_PROCESS_TIMEOUT` y `KILL_ALL_PROCESSES_TIMEOUT`.
El README indica que la imagen consume aproximadamente 8.3 MB de RAM y es más ligera que Busybox o Alpine en su propio marco. También explica que ejecutar múltiples procesos del sistema operativo en un contenedor es compatible con la filosofía de un único servicio lógico de Docker, y que el proyecto no impone ninguno de los dos enfoques. Ubuntu 26.04 LTS incluye Rust Coreutils en lugar de GNU Coreutils, lo cual el README señala como una consideración.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.