我们试图在不使用Jenkins的情况下将OpenShift流设置为尽可能接近默认值。
到目前为止,我已经设法使s2i生成的Dockerfile适应我们的需求(以获取s2i映像的好处),并建立了一个简单的“ oc new-app”管道,该管道在git存储库推送之后创建了一个构建。生成的docker映像添加到映像流,并由该映像流触发的部署更新将推送到默认容器。效果很好。
现在,我们还想将此Docker映像推送到外部docker存储库(OpenShift已知的RED HAT CONTAINER REGISTRY),我实质上想保留现有流程,而不是使其适应于使用外部注册表而不是内部的。
那么,我可以设置一个“ build”或类似的东西什么也不做,只是获取该图像并将其推送到Docker注册表中吗?如何使用oc
命令设置它?
答案 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
将secret
与builder
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