redemonbr/podman-steroidsPodman增强版镜像,集成多种工具用于构建、审计容器及管理仓库
该镜像包含用于构建、审计和发布OCI与Docker镜像及容器的工具,且镜像体积小巧(Alpine变体小于180MB)。 包含以下工具:
目前,仅以Alpine Linux作为基础容器系统。但由于部分glib工具的需求,计划支持更多基础镜像。
<version>)这是默认镜像,基于最新稳定版Alpine Linux构建,包含Qemu的所有架构模拟器。
<version>-minimal)最小变体仅支持有限的 foreign 架构模拟,仅支持ARM(arm/v7、arm64/v8 - 小端变体)和x86(386和amd64)架构,以减小拉取体积(小于150MB),相比默认变体更轻量。
这些是最常用的架构,构建的镜像可在大多数设备上运行,包括Apple macOS设备(Apple Silicon或Intel CPU)、x86 CPU的Linux(AMD/Intel)、ARM v7设备(如Raspberry Pi 2及更高版本)以及WSL - Windows子系统Linux。
在某些情况下,这些镜像可能能够构建其他架构(如
arm/v5或arm/v6,由于与arm/v7的兼容性),但不提供支持。
如需更多架构支持,请使用包含所有Qemu模拟器的默认变体。
未来可能会移除对32位架构(即arm/v7和386)的支持,以进一步减小体积。
<version>-edge)Alpine "Edge"变体包含Alpine Edge仓库中最新版本的Podman及相关工具,但不保证上游兼容性。
建议仅在开发环境中谨慎使用,以了解上游包的更新动向。为保证稳定性,避免在生产环境中使用。
有关Alpine Edge的更多信息,请查看Alpine Wiki的仓库页面。
这些镜像每周自动更新。
镜像摘要附加了证明、软件物料清单(SBOM)和签名:
application/cyclonedx+json)。CycloneDX是现代软件供应链标准。application/vnd.syft+json)。Syft SBOM可与Grype配合使用进行漏洞扫描。注意:2023年8月13日前,证明采用SPDX格式(JSON,application/spdx+json)。
其他OCI制品推送到此仓库,包括许可证、公钥和README,带有以下标签:
DATE时间推送的许可证。当最新许可证更新时有用。DATE时间推送的公钥。当用于签名旧镜像和制品的密钥轮换时有用。DATE时间推送的README。当最新README更新时有用。公钥可用于验证镜像和制品的真实性,使用方法如下:
bash## 显示与镜像相关的签名和制品 $ cosign triangulate docker.io/redemonbr/podman-steroids:latest $ cosign tree docker.io/redemonbr/podman-steroids:latest ## 拉取/下载公钥(将保存为cosign.pub) $ oras pull docker.io/redemonbr/podman-steroids:publickey ## 验证镜像(通过清单/标签或摘要)、SBOM和证明 $ cosign verify --key cosign.pub docker.io/redemonbr/podman-steroids:latest $ cosign verify --key cosign.pub docker.io/redemonbr/podman-steroids@sha256:... $ cosign verify --attachment sbom --key cosign.pub docker.io/redemonbr/podman-steroids@sha256:... $ cosign verify-attestation --type cyclonedx --key cosign.pub docker.io/redemonbr/podman-steroids@sha256:...
所有来自捆绑包和工具的环境变量均被支持,如BUILDAH_FORMAT、STORAGE_DRIVER、CONTAINER_SSHKEY等。
此镜像仅实现一个用于自定义行为的环境变量:
0或false,则不会在入口点抑制qemu-binfmt-conf.sh的输出。默认抑制输出,默认值为1(抑制输出)。--privileged在Podman容器中运行Podman需要特权访问。以下以Podman为例,但也适用于Docker引擎:
console###### 在主机中 ###### $ podman run --privileged --rm --name podman-steroids -it docker.io/redemonbr/podman-steroids:latest /bin/bash ###### 在容器中 ###### ## 在另一个Ubuntu容器中运行命令 $ podman run --rm --name ubuntu docker.io/ubuntu:latest "echo hello world from ubuntu container" ## 生成Ubuntu镜像的SBOM $ syft packages --output syft-json --file syft-sbom.json registry:docker.io/ubuntu:latest ## 扫描Ubuntu SBOM中的漏洞 $ grype sbom:./syft-sbom.json
--privileged在Docker中运行Podman在安装了Docker的主机中:
console# docker run --privileged --rm --name podman-steroids redemonbr/podman-steroids:latest podman version
以GitLab容器仓库为例。
若示例包含签名,需在GitLab CI密钥中存储cosign密钥对(生成方法):
GitLab CI预定义了一些变量,包括CI_REGISTRY、CI_REGISTRY_USER、CI_REGISTRY_PASSWORD和CI_PROJECT_PATH。更多信息见GitLab CI预定义变量。
简单构建和推送:
ymlbuild: stage: build image: redemonbr/podman-steroids:latest variables: IMAGE_REPO: $CI_REGISTRY/$CI_PROJECT_PATH/my-image TAG: example script: - podman login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY - podman build --tag $IMAGE_REPO:$TAG . - podman push $IMAGE_REPO:$TAG
构建镜像,签名镜像,生成并附加SBOM(软件物料清单)和证明到远程仓库中的镜像。
注意:假设GitLab CI密钥中已设置COSIGN_PRIVATE_KEY和COSIGN_PUBLIC_KEY
ymlbuild: stage: build image: redemonbr/podman-steroids:latest variables: IMAGE_REPO: $CI_REGISTRY/$CI_PROJECT_PATH/my-image TAG: example before_script: - podman login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY - cosign login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY script: - podman build --squash --jobs $(nproc) --tag $IMAGE_REPO:$TAG . - podman push $IMAGE_REPO:$TAG ## 签名镜像并推送签名,然后验证 - cosign sign --yes --key $COSIGN_PRIVATE_KEY $IMAGE_REPO:$TAG - cosign verify --key $COSIGN_PUBLIC_KEY $IMAGE_REPO:$TAG ## 生成SBOM,附加到远程容器仓库,签名并验证 - syft packages --output syft-json --file syft-sbom.json $IMAGE_REPO:$TAG - cosign attach sbom --type syft --sbom syft-sbom.json $IMAGE_REPO:$TAG - cosign sign --yes --attachment sbom --key $COSIGN_PRIVATE_KEY $IMAGE_REPO:$TAG - cosign verify --attachment sbom --key $COSIGN_PUBLIC_KEY $IMAGE_REPO:$TAG ## 扫描SBOM中的漏洞 - grype sbom:./syft-sbom.json ## 生成证明,附加到远程容器仓库并验证 - syft packages --output cyclonedx-json --file cyclonedx-sbom.json $IMAGE_REPO:$TAG - cosign attest --yes --type cyclonedx --predicate cyclonedx-sbom.json --key $COSIGN_PRIVATE_KEY $IMAGE_REPO:$TAG - cosign verify-attestation --type cyclonedx --key $COSIGN_PUBLIC_KEY $IMAGE_REPO:$TAG
更多信息,请查看生成此镜像的仓库。
使用清单(而非标签)构建多架构镜像并推送到远程容器仓库。
ymlbuild: stage: build image: redemonbr/podman-steroids:latest variables: IMAGE_REPO: docker.io/namespace/my-image REGISTRY_USER: my-user REGISTRY_PASSWORD: password-safely-stored-in-secret-manager MANIFEST_NAME: example PLATFORMS: linux/amd64,linux/i386,linux/arm64/v8,linux/arm/v7 before_script: - podman login --username $REGISTRY_USER --password $REGISTRY_PASSWORD docker.io - cosign login --username $REGISTRY_USER --password $REGISTRY_PASSWORD docker.io script: - podman build --squash --jobs $(nproc) --platform $PLATFORMS --manifest $IMAGE_REPO:$MANIFEST_NAME . - podman manifest push $IMAGE_REPO:$MANIFEST_NAME $IMAGE_REPO:$MANIFEST_NAME ## 递归签名清单列表中包含的所有平台 - cosign sign --yes --key $COSIGN_PRIVATE_KEY --recursive $IMAGE_REPO:$MANIFEST_NAME
更多GitLab CI使用方法,请查看本项目的源代码,了解其如何使用GitLab CI进行自动构建。
Podman使用Buildah构建容器镜像。
虽然Buildah和Podman在构建过程中可以使用 foreign 平台的基础镜像并通过COPY/ADD添加资源,但RUN指令需要QEMU提供的模拟。
为使RUN指令能被模拟,QEMU依赖主机提供的 hypervisor(即加速器),如KVM。
若主机不支持这些加速器,foreign平台的RUN指令可能失败。
即使没有KVM,在某些情况下(如较新版本的Linux内核、高性能主机等),QEMU也能模拟foreign平台,但性能较低。有关QEMU加速器支持的更多信息,请阅读QEMU文档。
大多数云虚拟专用服务器提供商不提供支持KVM的虚拟机。因此,若在云环境中使用自定义CI运行器或在虚拟机中使用此镜像,请确保主机支持KVM。
更多信息:
本项目提供一份关于如何让Docker模拟其他架构以运行和构建容器的实时文档。rdnxk的自定义GitLab CI运行器使用Docker,类似于本教程中的配置。
查看多架构Docker教程。
以下是未来版本的计划。不保证实现,但会在有时间时跟踪:
glib及相关工具探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务