À propos du projet
Baseimage-docker est une image de base Docker construite sur Ubuntu et ajustée pour une utilisation dans des conteneurs. Elle est publiée sous le nom `phusion/baseimage` sur Docker Hub et GHCR, et est destinée à servir de point de départ pour vos propres images.
Le projet soutient que l'Ubuntu standard n'est pas conçu pour les conteneurs : son init Upstart suppose un matériel réel ou virtualisé, et de nombreux cas particuliers des conteneurs sont faciles à mal gérer. Baseimage-docker regroupe les correctifs et les outils d'administration qu'il juge nécessaires.
Ce qu'elle inclut :
- Un processus d'init correct, `/sbin/my_init`, qui récupère les processus enfants orphelins (évitant l'accumulation de zombies) et transmet SIGTERM aux enfants afin qu'ils puissent s'arrêter proprement au lieu d'être SIGKILLés.
- runit comme remplaçant d'Upstart, utilisé pour la supervision des services et le redémarrage automatique des démons en cas de crash.
- syslog-ng, écoutant uniquement localement et transmettant les messages à `docker logs`, plus logrotate.
- cron, et un serveur SSH qui est désactivé par défaut et n'autorise que l'authentification par clé.
- `setuser` pour exécuter des commandes en tant qu'un autre utilisateur avec un `$HOME` correct, et `install_clean` pour les installations apt qui nettoient les caches.
- Correctifs pour les incompatibilités APT avec Docker.
Utilisation : définissez `FROM phusion/baseimage:<VERSION>` et `CMD ["/sbin/my_init"]`. Des démons supplémentaires sont ajoutés en créant des scripts exécutables `run` sous `/etc/service/<NAME>`; runit les démarre et les redémarre à leur sortie. Les scripts de démarrage peuvent être placés dans `/etc/my_init.d` (exécutés dans l'ordre lexicographique) ou `/etc/rc.local`, et doivent se terminer avec le code 0.
Les variables d'environnement passées via `docker run --env` ou `ENV` du Dockerfile sont importées par `my_init` depuis `/etc/container_environment`, puis déversées dans des formats shell et JSON afin que les services et scripts dans n'importe quel langage puissent lire les valeurs d'origine. Le répertoire appartient à root et est restreint au groupe `docker_env` par défaut car les valeurs peuvent être sensibles. Les délais d'expiration pour la terminaison des enfants peuvent être ajustés avec `KILL_PROCESS_TIMEOUT` et `KILL_ALL_PROCESSES_TIMEOUT`.
Le README indique que l'image consomme environ 8,3 Mo de RAM et est plus légère que Busybox ou Alpine dans son propre cadre. Il explique également que l'exécution de plusieurs processus OS dans un seul conteneur est compatible avec la philosophie de service logique unique de Docker, et que le projet ne mandate aucune des deux approches. Ubuntu 26.04 LTS utilise Rust Coreutils au lieu de GNU Coreutils, ce que le README note comme une considération.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.