第 16 章 在容器中运行 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 来构建容器镜像,并在不同的容器注册表之间分发这些镜像。要将 Skopeo 集成到 Kubernetes 工作流中,您需要在容器中运行它。
-
Buildah:您希望在 Kubernetes 或 OpenShift CI/CD 系统中构建持续构建镜像的 OCI/container 镜像。在以前的版本中,人们使用 Docker 套接字连接到容器引擎,并执行
docker build
命令。这等同于为系统提供了 root 访问权限,而不需要不安全的密码。因此,红帽建议在容器中使用 Buildah。
不同的版本 :
- All :您正在主机上运行一个旧的操作系统,但您想要运行最新版本的 Skopeo、Buildah 或 Podman。解决方法是在容器中运行容器工具。例如,这对在无法原生访问最新版本的 Red Hat Enterprise Linux 7 容器主机上运行 Red Hat Enterprise Linux 8 提供的最新版本的容器工具很有用。
HPC 环境 :
- All :HPC 环境中的一个常见的限制是不允许非 root 用户在主机上安装软件包。当您在容器中运行 Skopeo、Buildah 或 Podman 时,您可以以非 root 用户身份执行这些特定的任务。
16.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/rhel10/skopeo
容器镜像:podman pull registry.redhat.io/rhel10/skopeo
$ podman pull registry.redhat.io/rhel10/skopeo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Skopeo 检查远程容器镜像
registry.access.redhat.com/ubi10/ubi
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow --rm
选项会在容器退出后删除registry.redhat.io/rhel10/skopeo
镜像。