当前位置: 首页 > 知识库问答 >
问题:

登录docker私有仓库失败?

欧盛
2023-04-24

docker私有仓库更改过ip地址,
旧的ip地址是 10.1.28.60
新的ip地址是 10.1.22.70

当尝试从命令行登录时docker login --username=admin 10.1.22.70:9000
错误提示如下:

Error response from daemon
: Get "http://10.1.22.70:9000/v2/"
: Get "http://10.1.28.60:9000/service/token?account=admin&client_id=docker&offline_token=true&service=harbor-registry"
: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

奇怪的地方是,请求新的ip地址10.1.22.70返回的错误信息里,出现了旧的ip地址10.1.28.60。这个旧的ip地址是存在哪儿的?要如何清除掉?

另外,客户端 /etc/docker/daemon.json 配置如下:

{
    "registry-mirrors": [
        "https://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn"
    ],
    "insecure-registries": [
        "10.1.22.70:9000"
    ],
    "features": {
        "buildkit": false
    }
}

在更改配置后,已经重新启动:

systemctl daemon-reload
systemctl restart docker.service

另外, /root/.docker/config.json 中似乎保存着旧ip的相关数据,已删除,好像也没什么用。

那么,这个是客户端的问题还是docker私库的问题?有没有可能是 docker私库 返回的旧的ip地址?

感谢解答!

补充:2023-04-24
问题出在harbor私库端。解决步骤:
1、找到harbor安装目录下:harbor.yml

# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 10.1.28.60

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 9000

harbor配置文件中果然保存的有 旧的ip地址10.1.28.60 (由于时间久远,已经忘记了这个 ip 是当初手工设置进来的,还是 harbor安装脚本生成的)
2、修改 hostname 配置后,docker-compose 停止和重启harbor,好像并没有效果。
3、最后找到了CSDN上一篇文章:[https://blog.csdn.net/qq_28077405/article/details/106661572]
重新执行 ./install命令,然后访问正常了。

共有1个答案

益承颜
2023-04-24

from chatGPT

这个问题看起来像是 Docker 客户端本地缓存了旧的 IP 地址,然后在向新的地址发送请求时出错了。

在客户端中有一个名为 /etc/hosts 的文件,它可以将主机名映射到 IP 地址。如果 Docker 客户端在先前的请求中将私有仓库的主机名解析为旧的 IP 地址并将其保存到了 /etc/hosts 文件中,那么在向新的 IP 地址发送请求时,可能会尝试使用旧的 IP 地址进行请求,导致请求失败。

为了解决这个问题,可以尝试在客户端中清除 /etc/hosts 文件中与私有仓库相关的任何旧条目,以便 Docker 客户端在向私有仓库发送请求时能够正确解析主机名并使用新的 IP 地址。

另外,你提到了 /root/.docker/config.json 文件中保存了旧的 IP 地址相关的数据,这个文件实际上是 Docker 客户端的配置文件,其中包含 Docker Hub、私有仓库的认证信息等等。如果你已经从中删除了与私有仓库相关的旧 IP 地址的条目,那么这个文件应该不会影响到你的问题。

最后,你也可以尝试在 Docker 私有仓库中检查是否存在任何配置文件或设置,这些设置可能会导致 Docker 私有仓库返回旧的 IP 地址。例如,如果私有仓库是通过 Kubernetes 集群进行部署的,那么可能需要检查 Kubernetes 中是否还有任何旧的服务或节点 IP 地址没有更新,这些 IP 地址可能会被用于私有仓库的服务发现。

 类似资料:
  • 问题内容: 我通过自定义证书配置了不安全的注册表。提供用户名和密码后,收到错误消息为 “来自守护程序的错误响应:获取 https:// ip 地址:5000 / v1 / users /:x509:未知授权机构签名的证书”。 问题答案: 执行以下步骤以使用私有证书对docker登录: 使用以下命令生成私有SSL证书。这将创建带有两个文件domain.crt,domain.key的certs文件夹

  • 私有仓库 有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。 本节介绍如何使用本地仓库。 docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 docker-registry v2.x 版本。 安装运行 docker-registry 容器运行 你可以通过获取官方 registry 镜像来运行。 $ docker

  • 本文向大家介绍Docker 私有仓库恢复实例详解,包括了Docker 私有仓库恢复实例详解的使用技巧和注意事项,需要的朋友参考一下 Docker 私有仓库恢复 之前openstack平台由于停电等影响,导致之前制作的registry 私有仓库的主机挂掉,还好数据挂载在nfs中,然后现在尝试重新启动恢复。 虚机安装nfs服务 apt-get install -y nfs-common 编辑 /etc

  • 本文向大家介绍Docker私有仓库Registry部署的实现,包括了Docker私有仓库Registry部署的实现的使用技巧和注意事项,需要的朋友参考一下 随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库。目前常用的两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是需要注册的。 私有仓库最常用的就是Regis

  • 本文向大家介绍搭建Docker私有仓库(自签名方式),包括了搭建Docker私有仓库(自签名方式)的使用技巧和注意事项,需要的朋友参考一下 为了能集中管理我们创建好的镜像,方便部署服务,我们会创建私有的Docker仓库。通读了一遍官方文档,Docker为了确保安全使用TLS,需要CA认证,认证时间长的要钱啊,免费过期时间太短,还是用自签名比较简单。 准备环境 环境:两台Centos 7 虚拟机  

  • 本文向大家介绍Docker  Registry 私有仓库搭建详细步骤,包括了Docker  Registry 私有仓库搭建详细步骤的使用技巧和注意事项,需要的朋友参考一下 Docker  Registry 私有仓库搭建 官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了。如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库