第 1 章 从容器开始

Linux 容器已逐渐成为一种关键的开源应用程序打包和交付技术,将轻量级应用程序隔离与基于镜像的部署方法的灵活性相结合。Red Hat Enterprise Linux 使用以下核心技术实施 Linux 容器,例如:

  • 控制组(cgroups)用于资源管理
  • 命名空间(namespace)用于进程隔离
  • SELinux 用于安全性
  • 安全多租户

这些技术降低了安全漏洞的可能性,并为您提供了生成和运行企业级容器的环境。

Red Hat OpenShift 提供了强大的命令行和 Web UI 工具,用于以称为 pod 的单元形式构建、管理和运行容器。红帽允许您在 OpenShift 之外构建和管理单个容器和容器镜像。本指南描述了为执行在 RHEL 系统上直接运行这些任务所提供的工具。

与其他容器工具实现不同,这里描述的工具不以单一的 Docker 容器引擎和 docker 命令为中心。相反,红帽提供了一组命令行工具,无需容器引擎即可操作。它们是:

  • podman - 用于直接管理 pod 和容器镜像(runstopstartpsattachexec ,等等)
  • buildah - 用于构建、推送和签名容器镜像
  • skopeo - 用于复制、检查、删除和签名镜像
  • runc - 为 podman 和 buildah 提供容器运行和构建功能
  • crun - 可选运行时,可以配置,并为 rootless 容器提供更大的灵活性、控制和安全性

由于这些工具与开放容器项目(OCI)兼容,因此它们可用于管理由 Docker 和其他兼容 OCI 的容器引擎生成和管理的相同的 Linux 容器。然而,它们特别适用于直接在 Red Hat Enterprise Linux 中运行在单节点用例。

如需多节点容器平台,请参阅 OpenShift使用 CRI-O 容器引擎 以了解详细信息。

1.1. Podman、Buildah 和 Skopeo 的特点

Podman、Skopeo 和 Buildah 工具被开发来取代 Docker 命令功能。这种场景中的每个工具都是非常轻量级的,并专注于功能的子集。

Podman、Skopeo 和 Buildah 工具的主要优点包括:

  • 以无根模式运行 - rootless 容器更安全,因为它们在运行时不需要添加任何特权
  • 不需要守护进程 - 这些工具在空闲时对资源的要求要低得多,因为如果您没有运行容器,Podman 就不会运行。相反,Docker 有一个守护进程一直在运行
  • 原生 systemd 集成 - Podman 允许您创建 systemd 单元文件,并将容器作为系统服务运行

Podman、Skopeo 和 Buildah 的特点包括:

  • Podman、Buildah 和 CRI-O 容器引擎都使用相同的后端存储目录,/var/lib/containers,而不是默认使用 Docker 存储位置 /var/lib/docker
  • 虽然 Podman、Buildah 和 CRI-O 共享相同的存储目录,但它们不能相互交互。这些工具可以共享镜像。
  • 要以编程方式与 Podman 进行交互,您可以使用 Podman v2.0 RESTful API,它可以在有根和无根的环境中工作。如需更多信息,请参阅 使用 container-tools API 章节。