如何“docker 登录”到 OpenShift Docker 注册表

Bal*_*hna 0 azure openshift docker openshift-client-tools 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
Run Code Online (Sandbox Code Playgroud)

我收到错误如下:

来自守护程序的错误响应:获取https://image-registry.openshift-image-registry.svc:5000/v2/:拨打 tcp:查找 image-registry.openshift-image-registry.svc:没有这样的主机”

我可以尝试什么来解决这个问题?

请看这个:

$ oc 获取路线 -n openshift-image-registry

 NAME                HOST/PORT                                              
Run Code Online (Sandbox Code Playgroud)

默认路由 默认路由 openshift-image-registry。

路径服务端口终止通配符

       image-registry   <all>     reencrypt     None
Run Code Online (Sandbox Code Playgroud)

Dae*_*ark 10

image-registry.openshift-image-registry.svc:5000无法在 Openshift 集群的外部解析,因为它是内部注册表服务名称。因此,您应该通过注册表的 Route 主机名访问内部注册表服务才能执行此操作docker login。如果内部注册表未公开,请参阅手动公开安全注册表。

// 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
Run Code Online (Sandbox Code Playgroud)

这是我使用 podman 的测试证据如下。首先,您应该在由 docker 或 podman 客户端执行的客户端主机上放置并更新路由器通配符证书的受信任 CA。

# podman login  -u admin -p $(oc whoami -t) default-route-openshift-image-registry.apps.<clustername>.<basedomain>
Login Succeeded!
Run Code Online (Sandbox Code Playgroud)

此外,如果您遇到“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!
Run Code Online (Sandbox Code Playgroud)