手把手教會你在 centos7 環境下搭建 Harbor 倉庫,以及使用 Docker 以 HTTP 方式登錄 Harbor 倉庫。
CentOS7 環境下搭建 Harbor 倉庫
環境依賴
Harbor 倉庫需要環境:Python 2.7 或以上版本,Docker 1.10 或以上,Docker Compose 1.6.0 或以上。 CentOS7 自帶 Python ,所以不需要安裝。 關于 Docker 安裝網上有很多成熟的教程,就不在贅述。 所以接下來說一說 docker-compose 。 部署 docker-compose (這里是以 1.16.1 版本為例,具體版本可以根據自己需要進行下載):
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
提權:
chmod +x /usr/local/bin/docker-compose
驗證docker-compose是否部署成功:
docker-compose --version
如上圖,可以看到,我們已經成功部署 docker-compose 。
在線安裝 Harbor 及其相關配置
為了方便尋找 Harbor ,將它安裝在 usr/local/src 目錄下,所以需要進入該目錄:
cd /usr/local/src
下載相關gz包:
鏈接地址: https://github.com/vmware/harbor/releases根據自己的需要,下載即可。本篇文章以下載 v1.3.0 為例,下載命令:wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.3.0.tgz下載完成之后,進行解壓:tar -zxvf harbor-offline-installer-v1.3.0.tgz
耐心等待解壓完成即可。解壓完成之后,進行以下操作:
進入 harbor 目錄: cd harbor修改配置文件: vi harbor.cfg配置文件中有 hostname : hostname = 192.168.243.138#設置訪問地址,可用 ip ,域名,不能使用 127.0.0.1 或 localhost ,在此設為 192.168.243.138#如果設置為域名,記得在自己的 hosts 文件中做相應修改#在此只是示例,具體可根據自己需要 harbor.cfg 詳細配置可參考:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md#configuring-harbor修改相關內容之后,運行: ./prepare 進行更新參數操作
但是需要注意,這個腳本有個坑 .hostname =reg.xx.com 默認的不能有,注釋掉也不行。 不要問我為什么知道這個,耗在這里耗了將近半個小時。 配置文件中有關于 Harbor 的默認密碼:
修改配置文件之后,即可啟動,一條命令即可:
./install.sh
如下圖, Harbor 正在啟動:
如下圖所示時,表示 Harbor 安裝成功
此時,我們可以通過訪問剛才設置的 ip 地址,訪問到 Harbor 界面
輸入默認賬號: admin ,密碼: Harbor12345 ,可以看到管理界面:
在這個過程中,常用的命令就是停止和安裝命令:
docker-compose down -v 停止docker-compose up -d 啟動
可能出現的錯誤
1,無法訪問此頁:造成的原因,可能沒有把防火墻關閉,導致不能訪問 一條命令即可:
臨時關閉防火墻: systemctl stop firewalld 永久關閉防火墻: systemctl disable firewalld.service
但是一般不建議把防火墻關掉。先寫在這里,我后續再研究研究,看看都用到了哪兒些端口,等回來再更新
2,查看日志時,發現錯誤: failed to connect to tcp://postgresql:5432 解決辦法:
停止并刪除 docker 容器: docker-compose down -v啟動所有 docker 容器: docker-compose up -d
3,在停止并刪除docker容器時,發現錯誤:ERROR: network harbor_harbor has active endpoints 解決辦法:
重啟 Docker service:service docker restart
4,ERROR:Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables –wait -t nat -I DOCKER -i br-2add1a39bc5d -j RETURN: iptables: No chain/target/match by that name。 (exit status 1)
出現這個問題的原因是因為,我是后來才關閉的防火墻,這個時候需要重啟一下 docker 才生效。
service docker restart
重啟docker之后,再運行命令:
./install.sh
問題解決。 以上是 CentOS7 下搭建 Harbor 倉庫的過程,接下來說說使用 Docker 以 HTTP 方式登錄 Harbor 倉庫
Docker 登錄 Harbor 倉庫( HTTP 方式)
Docker 登錄到 Harbor 倉庫時,不管是使用 http 協議還是使用 https 協議,都需要修改一些配置。 來介紹一下,在使用 http 協議時,需要進行什么哪些配置。 首先,確定自己的 Harbor 倉庫使用的是 http 協議,在 harbor.cfg 文件中就可以看到:
查找 docker 的服務文件,使用命令:
systemctl status docker
可以看到 docker 的服務文件在 /etc/systemd/system 目錄下。
接下來我們需要去編輯 docker.service 文件,并進行一些修改,在 ExecStart 處,添加 –insecure-registry 參數
--insecure-registry=reg.zll.com( Harbor地址, harbor.cfg 文件中的 hostname 項)
修改完成如下圖:
重新加載 service 文件,重啟 docker 服務:
systemctl daemon-reloadsystemctl restart docker
在圖中可以看到, Harbor 倉庫我是使用的域名,所以還需要在 hosts 文件中做一些配置,如果使用的是 ip 地址,則此步驟可以忽略
編輯 hosts 文件: vi /etc/hosts將 Harbor 地址寫入到 hosts 文件中: 192.168.243.138 reg.zll.com#以我這次的配置為例,具體可以靈活變動
此時,相關步驟便結束了,我們可以在 Docker 客戶端使用命令進行登錄
docker login [ ip 地址或域名]( Harbor 地址, harbor.cfg 文件中的 hostname 項)//根據提示分別輸入用戶名和密碼
可以看到,此時 Docker 可以登錄到 Harbor 倉庫上面了。
因為使用的是 http 協議登陸的,所以會有一個警告,對于實驗環境來說,是可以忽略的。
可能遇到的問題:
Error response from daemon: Get http://reg.zll.com/v2/: dial tcp 192.168.243.138:80: connect: connection refused 原因是因為在修改了 hosts 文件之后,沒有重新載入 docker ,再運行一下命令即可:
systemctl daemon-reloadsystemctl restart docker
關于 Docker 登錄 Harbor 倉庫( HTTP 方式)到此便結束了 以上,感謝您的閱讀~