容器基础镜像选择与容器镜像仓库使用指南
1. 选择容器基础镜像
1.1 UBI 镜像概述
在容器开发中,选择合适的基础镜像至关重要。UBI(Universal Base Image)镜像提供了多种选择,以满足不同的应用场景。其中,UBI Minimal 和 UBI Micro 镜像非常适合实现微服务架构,在这种架构中,我们需要协调多个容器,每个容器运行一个特定的微服务。
1.2 UBI Init 镜像
1.2.1 背景与特点
常见的容器开发模式是创建高度专业化的镜像,每个镜像内部运行一个单一组件。然而,在某些特殊场景下,需要协调多个进程,这种模式就不太适用了。为了解决这个问题,Red Hat 引入了 UBI Init 镜像,它在容器内部运行一个最小的 Systemd init 进程,允许执行由 PID 为 1 的 Systemd 进程管理的多个 Systemd 单元。
UBI Init 镜像比标准镜像略小,但比最小镜像有更多可用的软件包。默认的 CMD 设置为 /sbin/init,对应 Systemd 进程。由于 Systemd 会忽略 Podman 用于停止运行容器的 SIGTERM 和 SIGKILL 信号,因此在镜像的 Dockerfile 中通过 STOPSIGNAL SIGRTMIN+3 指令配置发送 SIGRTMIN+3 信号进行终止。
1.2.2 示例
以下是一个 Dockerfile/ContainerFile 的示例,用于安装 httpd 软件包并配置一个 systemd 单元来运行 httpd 服务: