如何“docker 登录”到 OpenShift Docker 注册表
How to `docker login` to OpenShift Docker registry
我正在使用部署在 Azure 中的 Redhat OpenShift 4.4.17。
我以管理员身份登录到 OpenShift。
我在本地有一个 Docker 图像,现在我需要将我的 docker 图像推送到 OpenShift Docker 注册表。
我正在使用以下命令
docker login -u <user_name> -p `oc whoami -t` image-registry.openshift-image-registry.svc:5000
我得到的错误是:
Error response from daemon: Get https://image-registry.openshift-image-registry.svc:5000/v2/: dial tcp: lookup image-registry.openshift-image-registry.svc: no such host"
我该如何解决这个问题?
请看这个:
$ oc get route -n openshift-image-registry
NAME HOST/PORT
默认路由 default-route-openshift-image-registry。
路径服务端口终止通配符
image-registry <all> reencrypt None
image-registry.openshift-image-registry.svc:5000
无法在 Openshift 集群外部解析,因为它是内部注册表服务名称。
因此,您应该通过注册表的 Route 主机名访问内部注册表服务,以便执行 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 客户端的客户端主机上放置和更新路由器通配符证书的可信 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”或 docker 案例的相同选项而不是那个。
# 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!
我正在使用部署在 Azure 中的 Redhat OpenShift 4.4.17。
我以管理员身份登录到 OpenShift。
我在本地有一个 Docker 图像,现在我需要将我的 docker 图像推送到 OpenShift Docker 注册表。
我正在使用以下命令
docker login -u <user_name> -p `oc whoami -t` image-registry.openshift-image-registry.svc:5000
我得到的错误是:
Error response from daemon: Get https://image-registry.openshift-image-registry.svc:5000/v2/: dial tcp: lookup image-registry.openshift-image-registry.svc: no such host"
我该如何解决这个问题?
请看这个:
$ oc get route -n openshift-image-registry
NAME HOST/PORT
默认路由 default-route-openshift-image-registry。
路径服务端口终止通配符
image-registry <all> reencrypt None
image-registry.openshift-image-registry.svc:5000
无法在 Openshift 集群外部解析,因为它是内部注册表服务名称。
因此,您应该通过注册表的 Route 主机名访问内部注册表服务,以便执行 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 客户端的客户端主机上放置和更新路由器通配符证书的可信 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”或 docker 案例的相同选项而不是那个。
# 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!