docker无法push镜像到Harbor私服的问题.

Harbor 版本,

v1.9.4

Docker版本.

18.09.6

在配置了 /etc/docker/daemon.json后:

registry-mirrors  配置为 https://{HARBER_SERVER_HOSTNAME}

insecure-registries {HARBER_SERVER_HOSTNAME}

{HARBER_SERVER_HOSTNAME} 在实际中替换为harbor 服务器的 实际 hostname.

重启docker后,

docker  login -u harbor ${HARBER_SERVER_HOSTNAME},输入密码可以正常登陆.

重新给 一个本地image打上标签后,push到目标库,一直报错。

重新打tag.

[root@{HARBER_SERVER_HOSTNAME} ~]# docker tag goharbor/chartmuseum-photon:v0.9.0-v1.9.4 {HARBER_SERVER_HOSTNAME}/harbor/chartmuseum-photon:v0.9.0-v1.9.4

push镜像(harbor中project和用户名密码均没有问题/)

[root@umsk8s-docker-harbor ~]# docker push{HARBER_SERVER_HOSTNAME}/harbor/chartmuseum-photon:v0.9.0-v1.9.4
The push refers to repository [docker.io/{HARBER_SERVER_HOSTNAME}/harbor/chartmuseum-photon]
Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 114.114.114.114:53: read udp 172.30.251.205:48222->114.114.114.114:53: i/o timeout
[root@umsk8s-docker-harbor ~]#

发现无论如何配置,docker会默认尝试把镜像push 到 docker.io上去.

百度搜索不到任何有用信息。

Google一下,在github上搜索到了相关信息.

连接如下https://github.com/goharbor/harbor/issues/4413

问题是。在配置insecure-registry时,docker 必须配置服务器的 FQDN或者IP地址.不能是服务器的hostname(比如harbor)

以下为解决方法:

配置harbor服务器的  /etc/hosts,将本地ip地址对应为一条FQDN记录,比如  172.20.11.1  harbor.daemon.io

停止harbor后修改harbor配置  harbor.yml 文件,将 hostname 配置项改为  harbor.daemon.io (一个FQDN),然后重新配置 harbor.

docker-compose  down -v

修改harbor.yml

生成配置文件

./prepare

启动habror

docker-comp up -d

(可以在另外一台能访问harbor服务器的机器上配置  hosts 记录为 FQDN,然后web访问 harbor检查是否能正常登陆.)

重新配置 docker daemon 中的配置   registry-mirrors 和 insecure-registries 然后重启 docker.

比如:

    "registry-mirrors": ["https:/ harbor.daemon.io "],
   "insecure-registries": [" harbor.daemon.io "]

之后就能正常pull,并且push本地镜像到 harbor私服中.

 

你可能感兴趣的:(虚拟化)