第 1 章 从容器开始
Linux 容器已逐渐成为一种关键的开源应用程序打包和交付技术,将轻量级应用程序隔离与基于镜像的部署方法的灵活性相结合。Red Hat Enterprise Linux 使用以下核心技术实施 Linux 容器,例如:
- 控制组(cgroups)用于资源管理
- 命名空间(namespace)用于进程隔离
- SELinux 用于安全性
- 安全多租户
这些技术降低了安全漏洞的可能性,并为您提供了生成和运行企业级容器的环境。
Red Hat OpenShift 提供了强大的命令行和 Web UI 工具,用于以称为 pod 的单元形式构建、管理和运行容器。红帽允许您在 OpenShift 之外构建和管理单个容器和容器镜像。本指南描述了为执行在 RHEL 系统上直接运行这些任务所提供的工具。
与其他容器工具实现不同,这里描述的工具不以单一的 Docker 容器引擎和 docker
命令为中心。相反,红帽提供了一组命令行工具,无需容器引擎即可操作。它们是:
-
podman - 用于直接管理 pod 和容器镜像(
run
、stop
、start
、ps
、attach
和exec
,等等) - 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 章节。