比如10.10.7.52(registry.harbor.com)是主harbor,打算重新搭建一个10.10.37.197(reigstry-bak.harbor.com)的备harbor。

10.10.37.197上要做的事:
下载harbor离线安装包,解压到/usr/local/;
修改主机名为registry-bak.harbor.com(hostnamectl set-hostname --static registry-bak.harbor.com);
修改/usr/local/harbor/harbor.cfg的“hostname = registry-bak.harbor.com”;
安装docker、docker-compose;
修改/etc/sysconfig/docker,“OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'”去掉“--selinux-enabled”;
启动harbor,cd /usr/local/harbor,执行./install.sh(重启harbor也可以用这个脚本,镜像和harbor相关配置不会丢失);
客户端加上到registry-bak.harbor.com的解析后,浏览器访问试试,admin、Harbor12345。

10.10.7.52上要做的事:
因为由harbor搭建出来的docker容器没有指定使用独立的dns,所以由harbor建出来的容器都是使用的宿主的dns,如果宿主的dns没有到registry-bak.harbor.com的解析,这时候起来了容器,那所有容器也没有到registry-bak.harbor.com的解析;之后再给宿主的dns加上了到registry-bak.harbor.com的解析,而没有重启容器的话,容器也依然没有到registry-bak.harbor.com的解析。所以在registry.harbor.com(10.10.7.52)这个web上新建复制策略,目标地址写上“http://registry-bak.harbor.com”,会报错:“测试连接目标失败,请检查设置。failed: Temporary failure in name resolution。”
所以,必须保证主harbor宿主有到备harbor域名的dns解析,同时如果dns生效之时容器已经启动了的,还需要重启一下所有容器,即重启harbor服务(./install.sh)。