Docker企業級倉庫Harbor,根據該文章搭建兩台服務器用作Harbor。
系統環境
HOSTNAME | IP | OS | Hard |
---|---|---|---|
harbor1 | 192.168.1.12 | Centos 7.6 | 4c4g |
harbor2 | 192.168.1.13 | Centos 7.6 | 4c4g |
完成后在 harbor1 域名中添加 harbor2 的DNS記錄,如果不添加的話,無法解析域名將不會復制成功
同樣參考部署 Harbor 中最后測試部分,在 harbor2 上創建項目 goharbor。接下來要做雙主復制同步鏡像
因為使用了域名,且是 https 訪問,所以兩台服務器必須要互換證書
在 harbor1 創建 harbor2 的證書目錄
mkdir /etc/docker/certs.d/harbor2.yanjiang.chai
在 harbor2 創建 harbor1 的證書目錄
mkdir /etc/docker/certs.d/harbor1.yanjiang.chai
cd /usr/local/harbor/pki scp harbor1.yanjiang.chai.cert harbor2.yanjiang.chai:/etc/docker/certs.d/harbor1.yanjiang.chai scp harbor1.yanjiang.chai.key harbor2.yanjiang.chai:/etc/docker/certs.d/harbor1.yanjiang.chai scp ca.crt harbor2.yanjiang.chai:/etc/docker/certs.d/harbor1.yanjiang.chai scp harbor1.yanjiang.chai.crt harbor2.yanjiang.chai:/etc/pki/ca-trust/source/anchors
兩台全部重啟 docker
update-ca-trust
systemctl restart docker
因為docker的重啟,harbor可能會宕掉
cd /usr/local/harbor ./install.sh
harbor1
登錄web界面:https://harbor1.yanjiang.chai
進入倉庫管理,在 harbor1 上添加 harbor2 的信息
填寫 harbor2 的信息
目標名:自定義
描述: 自定義
目標URL:如果是域名的形式,必須在有域名服務可以解析域名,hosts是沒用的,除非是ip的形式訪問
訪問ID:harbor2 的登錄用戶名,或者在 harbor2 創建的賬戶
訪問密碼:賬戶密碼
驗證遠程證書:取消復選框(因為證書是自簽證書,所以不需要驗證)最后測試連接成功后,再確定
若測試失敗,請查看
/var/log/harbor/core.log
添加成功如下
創建復制規則
過濾器的填寫參考官網的 創建復制規則
創建成功
harbor2
harbor2 做和 harbor1 同樣的操作
同步測試
現在由於兩個harbor中都有 goharbor 項目倉庫,就將啟動harbor的鏡像選擇一台全部上傳。
這里以 harbor2 為例上傳
$ docker login -u admin -p Harbor12345 https://harbor2.yanjiang.chai
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
這里就用腳本上傳了
#!/bin/bash HARBOR_IMAGE=$(docker image ls | grep -v TAG | awk '{print $1":"$2}') HARBOR_REGISTRY="harbor2.yanjiang.chai" for SOURCE_IMG in $HARBOR_IMAGE do CHANAGE_TAG_IMG="${HARBOR_REGISTRY}/${SOURCE_IMG}" docker tag $SOURCE_IMG $CHANAGE_TAG_IMG docker push $CHANAGE_TAG_IMG > /dev/null if [ $? = 0 ]; then echo -e "\033[33m${HARBOR_REGISTRY}/${SOURCE_IMG}\033[0m pushed \033[32mSuccessful\033[0m" docker image rm $CHANAGE_TAG_IMG else echo -e "\033[33m${HARBOR_REGISTRY}/${SOURCE_IMG}\033[0m pushed \033[31mFailed\033[0m" fi done
現在在 harbor1 和 harbor2 的web界面都可以看到 goharbor 項目中已存在鏡像。