OpenShift:我是否可以设置一个将 docker 镜像从镜像流复制到外部 docker 存储库的构建



我们试图设置一个尽可能接近默认值的OpenShift流,而不必使用Jenkins。

到目前为止,我已经设法使 s2i 生成的 Dockerfile 适应我们的需求(以获得 s2i 映像的好处(,并设置了一个简单的"oc new-app"管道,该管道在 git 存储库之后创建一个构建将生成的 docker 映像推送到映像流,并由映像流更新触发的部署推送到默认 pod。 这很好用。

现在我们希望另外将此 docker 映像推送到外部 docker 存储库(OpenShift 已知的红帽容器注册表(,我本质上希望保留现有流程,而不是使其适应使用外部注册表而不是内部注册表。

那么,我可以设置一个"构建"或类似的东西,它只做那个映像并将其推送到 docker 注册表吗? 如何使用 oc 命令进行设置?

你想把buildConfig构建的映像推送到外部注册表,对吗?我认为工作流程是这样的:将 Docker 凭据用于私有注册表。

  • 创建凭据secret
$ oc create secret generic <secret_name> 
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> 
    --type=kubernetes.io/dockerconfigjson
  • secretbuilder ServiceAccount 链接。

  • buildConfig中配置构建镜像推送目标,如下所示。

spec:
  output:
    to:
      kind: DockerImage   
      name: external.registry.io/subpath/imagename:latest
    pushSecret:
      name: <secret_name>

我希望它对你有所帮助。

您可以使用 skopeo 命令行工具将容器映像从一个 docker 注册表复制到另一个注册表,而无需再次构建映像。

这是Red Hat官方支持的工具,是新工具套件(buildah,podman,skopeo等(的一部分,以支持在无守护进程cri-o容器运行时而不是docker上运行OpenShift和Kubernetes。

通过docker login登录到源注册表和目标注册表,或使用--src-creds--dest-creds标志。

skopeo copy 
  --src-creds=testuser:testpassword 
  --dest-creds=otheruser:otherpassword 
  docker://myregistrydomain.com:5000/dockerimage:tag 
  docker://mysecondregistrydomain.com:5000/dockerimage:tag

最新更新