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私服中.