logo
0
1
Login
docs: 优化文档增加示例

Manifest

推送 Docker manifest 多系统架构镜像文件的插件。

badge badge badge badge badge

镜像

cnbcool/manifest:latest

在云原生构建中使用

main: push: # 示例1:镜像源为 `hub.docker.com` # 下面的配置,会基于 `foo/bar:v1.0.0-linux-amd64` 和 `foo/bar:v1.0.0-linux-arm64`,两个镜像合并后生成 `foo/bar:v1.0.0` - stages: - name: manifest image: cnbcool/manifest settings: # docker 用户名 username: docker-usernname # docker 密码 password: docker-password # 合并后生成的多系统架构镜像 target: foo/bar:v1.0.0 # 模板,用于生成多系统架构镜像名称,template 和 platforms 结合,得到用来生成多系统架构的原始镜像名称。 # 该例子中,原始镜像名称为:foo/bar:v1.0.0-linux-amd64 和 foo/bar:v1.0.0-linux-arm64,这两个镜像必须已经存在 template: foo/bar:v1.0.0-OS-ARCH # 多系统架构 platforms: - linux/amd64 - linux/arm64 # 是否跳过 TLS 证书验证,默认 false skipVerify: false # 忽略缺失的源镜像,即如果有源镜像缺失不报错,默认false ignoreMissing: false # 示例二:镜像源为 `docker.cnb.cool`,无需传用户名密码,插件中会默认使用环境变量中的用户名和密码 # 下面的配置,会基于 `docker.cnb.cool/foo/bar:v1.0.0-linux-amd64` 和 `docker.cnb.cool/foo/bar:v1.0.0-linux-arm64`, # 两个镜像合并后生成 `docker.cnb.cool/foo/bar:v1.0.0` - stages: - name: manifest image: cnbcool/manifest settings: # 合并后生成的多系统架构镜像 target: docker.cnb.cool/foo/bar:v1.0.0 # 模板,用于生成多系统架构镜像名称,template 和 platforms 结合,得到用来生成多系统架构的原始镜像名称 # 该例子中,原始镜像名称为:docker.cnb.cool/foo/bar:v1.0.0-linux-amd64 和 docker.cnb.cool/foo/bar:v1.0.0-linux-arm64,这两个镜像必须已经存在 template: docker.cnb.cool/foo/bar:v1.0.0-OS-ARCH # 多系统架构 platforms: - linux/amd64 - linux/arm64 # 是否跳过 TLS 证书验证,默认 false skipVerify: false # 忽略缺失的源镜像,即如果有源镜像缺失不报错,默认false ignoreMissing: false # 示例3:镜像源为 `hub.docker.com`,同时生成多个目标多系统架构镜像 # 下面的配置,会基于 `foo/bar:v1.0.0-linux-amd64` 和 `foo/bar:v1.0.0-linux-arm64` 两个镜像合并后, # 生成 `foo/bar:v1.0.0` 和 `foo/bar:latest` 两个版本的镜像,但实际这两个版本只想同一个镜像 - stages: - name: manifest image: cnbcool/manifest settings: # docker 用户名 username: docker-usernname # docker 密码 password: docker-password # 合并后生成的多系统架构镜像,支持同时生成多个,用英文逗号分隔,例如 foo/bar:v1.0.0,foo/bar:latest target: - foo/bar:v1.0.0 - foo/bar:latest # 模板,用于生成多系统架构镜像名称,template 和 platforms 结合,得到用来生成多系统架构的原始镜像名称 # 该例子中,原始镜像名称为:foo/bar:v1.0.0-linux-amd64 和 foo/bar:v1.0.0-linux-arm64,这两个镜像必须已经存在 template: foo/bar:v1.0.0-OS-ARCH # 多系统架构 platforms: - linux/amd64 - linux/arm64 # 是否跳过 TLS 证书验证,默认 false skipVerify: false # 忽略缺失的源镜像,即如果有源镜像缺失不报错,默认false ignoreMissing: false

通过上面的配置,可以在 DockerHub 给 foo/bar 打上 v1.0.0 标签,并且 v1.0.0 跟 DockerHub 上这两个标签的镜像关联,注意,DockerHub 上以下两个镜像标签必须存在,即已经推送过:

  • foo/bar:v1.0.0-linux-amd64
  • foo/bar:v1.0.0-linux-arm64

执行 docker pull foo/bar:v1.0.0 时会基于运行环境的系统架构,拉取对应的镜像。

参数说明

  • username: 非必填,docker 认证用户名,当 target 镜像源为 CNB 制品库时,默认使用环境变量 CNB_TOKEN_USER_NAME
  • password: 非必填,docker 认证密码,当 target 镜像源为 CNB 制品库时,默认使用环境变量 CNB_TOKEN
  • skipVerify: 非必填,truefalse,默认 false,是否跳过 TLS 证书验证。
  • target: 必填,目标镜像名称(合并后的 manifest 会推送到这个镜像名)。imagename:tagimagename 替换为镜像名,tag 替换为标签名)格式。支持多个,用英文逗号分隔。例如:foo/bar:v1.0.0foo/bar:latest,foo/bar:v1.0.0
  • template : 必填,关联镜像的名称模板,模板中的 OS 和 ARCH 字符串会被替换成具体系统和架构(platforms 中传入的系统/架构)。例如:foo/bar:v1.0.0-OS-ARCH(可将 foo/bar 和 v1.0.0 替换成自己的镜像名和版本号)
  • platforms: 必填,多系统架构列表,多个用分号分隔或以上述示例中的数组形式传入。格式为 OS/ARCH(系统/架构) 的系统架构列表,它会基于 template 模板生成 target 要关联的镜像列表。例如:linux/amd64,linux/arm64
  • ignoreMissing : 非必填,truefalse,默认 false,是否忽略缺失的源镜像,即需要合并的多系统架构的镜像如果缺失不报错,上述示例中 foo/bar:v1.0.0-linux-arm64foo/bar:v1.0.0-linux-amd64 两个镜像的其中任何一个缺失,不会报错。但如果都缺失仍然会报错。