第 18 章 在容器中运行 Skopeo、Buildah 和 Podman
您可以在容器中运行 Skopeo、Buildah 和 Podman。
使用 Skopeo,您可以检查远程注册中心中的镜像,而无需下载整个镜像及其所有层。您还可以使用 Skopeo 来复制镜像、签名镜像、同步镜像以及在不同格式和层压缩间转换镜像。
			Buildah 处理对 OCI 容器镜像的构建。使用 Buildah,您可以创建一个可运行的容器,可以从头开始,也可以使用一个镜像作为起点。您可以从正常工作的容器或使用 Containerfile 中的指令来创建镜像。您可以挂载和卸载正常工作容器的根文件系统。
		
			借助 Podman,您可以管理容器和镜像、挂载到这些容器的卷,以及容器组构成的 pod。Podman 是基于容器生命周期管理的 libpod 库。libpod 库提供用于管理容器、Pod、容器镜像和卷的 API。
		
在容器中运行 Buildah、Skopeo 和 Podman 的原因:
- CI/CD 系统 : - Podman 和 Skopeo :您可以在 Kubernetes 中运行 CI/CD 系统,或者使用 OpenShift 来构建容器镜像,并在不同的容器 registry 之间分发这些镜像。要将 Skopeo 集成到 Kubernetes 工作流中,您需要在容器中运行它。
- 
							Buildah :您希望在 Kubernetes 或 OpenShift CI/CD 系统中构建持续构建镜像的 OCI/container 镜像。在以前的版本中,人们使用 Docker 套接字连接到容器引擎,并执行 docker build命令。这等同于为系统提供 root 访问权限而无需一个不安全的密码。因此,Red Hatrecommends 在容器中使用 Buildah。
 
- 不同的版本 : - All:您在主机上运行旧的操作系统,但您想要运行最新版本的 Skopeo、Buildah 或 Podman。解决方法是在容器中运行容器工具。例如,这可用于在 Red Hat Enterprise Linux 7 容器主机上运行 Red Hat Enterprise Linux 8 中提供的容器工具的最新版本,而无需原生访问最新版本。
 
- HPC 环境 : - All:HPC 环境中的一个常见的限制是不允许非 root 用户在主机上安装软件包。当您在容器中运行 Skopeo、Buildah 或 Podman 时,您可以以非 root 用户身份执行这些特定的任务。
 
18.1. 在容器中运行 Skopeo
您可以使用 Skopeo 检查远程容器镜像。在容器中运行 Skopeo 意味着容器根文件系统与主机 root 文件系统分离。要在主机和容器间共享或复制文件,您必须挂载文件和目录。
先决条件
- 
						container-tools元数据包已安装。
流程
- 登录到 registry.redhat.io 注册中心: - podman login registry.redhat.io - $ podman login registry.redhat.io Username: myuser@mycompany.com Password: <password> Login Succeeded!- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 获取 - registry.redhat.io/rhel9/skopeo容器镜像:- podman pull registry.redhat.io/rhel9/skopeo - $ podman pull registry.redhat.io/rhel9/skopeo- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 Skopeo 检查远程容器镜像 - registry.access.redhat.com/ubi9/ubi:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - --rm选项会在容器退出后删除- registry.redhat.io/rhel9/skopeo镜像。