OpenShift:我可以设置将docker映像从映像流复制到外部docker存储库的版本吗?

时间:2019-03-28 11:45:42

标签: docker openshift s2i

我们试图在不使用Jenkins的情况下将OpenShift流设置为尽可能接近默认值。

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

现在,我们还想将此Docker映像推送到外部docker存储库(OpenShift已知的RED HAT CONTAINER REGISTRY),我实质上想保留现有流程,而不是使其适应于使用外部注册表而不是内部的。

那么,我可以设置一个“ build”或类似的东西什么也不做,只是获取该图像并将其推送到Docker注册表中吗?如何使用oc命令设置它?

2 个答案:

答案 0 :(得分:1)

您想将buildConfig生成的映像推送到外部注册表,对吗? 我认为工作流程是这样的:Using Docker Credentials for Private Registries

  • 创建凭据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>

希望对您有帮助。

答案 1 :(得分:1)

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

这是Red Hat官方支持的工具,它是new suite of tools(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