这个项目能做什么

Baseimage-docker 是一个基于 Ubuntu 构建、为容器内使用而调整的 Docker 基础镜像。它以 `phusion/baseimage` 发布在 Docker Hub 和 GHCR 上,旨在作为你自己镜像的起点。 该项目认为原版 Ubuntu 并非为容器设计:它的 Upstart init 假定运行在真实或虚拟化硬件上,而且许多容器边界情况很容易出错。Baseimage-docker 打包了它认为必要的修复和管理工具。 它包含的内容: - 一个正确的 init 进程 `/sbin/my_init`,它会回收孤儿子进程(避免僵尸进程堆积),并将 SIGTERM 转发给子进程,使它们能够干净关闭,而不是被 SIGKILL 杀死。 - 用 runit 替代 Upstart,用于服务监督以及崩溃守护进程的自动重启。 - syslog-ng,仅监听本地并将消息转发到 `docker logs`,外加 logrotate。 - cron,以及一个默认禁用、仅允许密钥认证的 SSH 服务器。 - `setuser`,用于以另一个用户身份运行命令并带有正确的 `$HOME`;以及 `install_clean`,用于执行会清理缓存的 apt 安装。 - 针对 APT 与 Docker 不兼容问题的修复。 用法:设置 `FROM phusion/baseimage:<VERSION>` 和 `CMD ["/sbin/my_init"]`。通过在 `/etc/service/<NAME>` 下创建可执行的 `run` 脚本添加额外守护进程;runit 会启动它们,并在退出时重启它们。启动脚本可以放在 `/etc/my_init.d`(按字典序运行)或 `/etc/rc.local`,并且必须以退出码 0 退出。 通过 `docker run --env` 或 Dockerfile `ENV` 传入的环境变量由 `my_init` 从 `/etc/container_environment` 导入,然后转储为 shell 和 JSON 格式,以便任何语言的服务和脚本都能读取原始值。该目录默认由 root 拥有,并仅限 `docker_env` 组访问,因为其中的值可能敏感。终止子进程的超时可以通过 `KILL_PROCESS_TIMEOUT` 和 `KILL_ALL_PROCESSES_TIMEOUT` 调整。 README 指出该镜像占用约 8.3 MB 内存,并按它自己的说法比 Busybox 或 Alpine 更轻量。它还解释说,在一个容器中运行多个操作系统进程与 Docker 的单一逻辑服务理念是兼容的,并且该项目不强制要求任何一种方式。Ubuntu 26.04 LTS 附带的是 Rust Coreutils 而不是 GNU Coreutils,README 将此列为一项需要考虑的事项。