问题描述
我正在使用Azure中部署的Redhat OpenShift 4.4.17。
我在本地有一个Docker映像,现在我需要将Docker映像推送到OpenShift Docker注册表中。
我正在使用以下命令
docker login -u <user_name> -p `oc whoami -t` image-registry.openshift-image-registry.svc:5000
我收到以下错误消息:
守护程序的错误响应:获取https://image-registry.openshift-image-registry.svc:5000/v2/:拨打tcp:lookup image-registry.openshift-image-registry.svc:没有这样的主机”
该如何解决?
请参阅以下内容:
$ oc获取路由-n openshift-image-registry
NAME HOST/PORT
default-route default-route-openshift-image-registry。
路径服务端口终止向导
image-registry <all> reencrypt None
解决方法
image-registry.openshift-image-registry.svc:5000
在Openshift群集的外部无法解析,因为它是内部注册表服务名称。
因此,您应该通过注册表的路由主机名访问内部注册表服务,以便进行docker login
。如果内部注册表未公开,请参考Exposing a secure registry manually。
// expose the internal registry to external using Route.
$ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
// Verify the internal registry Route hostname.
$ oc get route -n openshift-image-registry
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
default-route default-route-openshift-image-registry.apps.clustername.basedomain image-registry <all> reencrypt None
// Try to login using the internal registry Route hostname.
$ docker login -u <user_name> -p $(oc whoami -t) default-route-openshift-image-registry.apps.clustername.basedomain
以下是我使用podman的测试证据。 首先,您应该在执行了docker或podman客户端的客户端主机上放置并更新Router通配符证书的受信任CA。
# podman login -u admin -p $(oc whoami -t) default-route-openshift-image-registry.apps.<clustername>.<basedomain>
Login Succeeded!
此外,如果您遇到“ x509:证书由未知授权机构签名”错误消息,则应将路由器受信任的CA放置在主机上,或者在podman情况下或使用相同选项时应使用“ --tls-verify = false”而不是那种情况。
# podman login -u admin -p $(oc whoami -t) default-route-openshift-image-registry.apps.<clustername>.<basedomain>
Error: error authenticating creds for "default-route-openshift-image-registry.apps.<clustername>.<basedomain>": pinging docker registry returned: Get https://default-route-openshift-image-registry.apps.<clustername>.<basedomain>/v2/: x509: certificate signed by unknown authority
# podman login --tls-verify=false -u admin -p $(oc whoami -t) default-route-openshift-image-registry.apps.<clustername>.<basedomain>
Login Succeeded!