CentOS7 下搭建 Harbor 倉庫以及登錄

手把手教會你在 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 版本為例,具體版本可以根據自己需要進行下載):

<code>curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose/<code>

提權:

<code>chmod +x /usr/local/bin/docker-compose/<code>

驗證docker-compose是否部署成功:

<code>docker-compose --version/<code>


CentOS7 下搭建 Harbor 倉庫以及登錄


如上圖,可以看到,我們已經成功部署 docker-compose 。

在線安裝 Harbor 及其相關配置

為了方便尋找 Harbor ,將它安裝在 usr/local/src 目錄下,所以需要進入該目錄:

<code>cd /usr/local/src/<code>

下載相關gz包:

<code>鏈接地址: 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/<code>

耐心等待解壓完成即可。解壓完成之後,進行以下操作:

<code>進入 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  進行更新參數操作/<code>

但是需要注意,這個腳本有個坑 .hostname =reg.xx.com 默認的不能有,註釋掉也不行。 不要問我為什麼知道這個,耗在這裡耗了將近半個小時。 配置文件中有關於 Harbor 的默認密碼:


CentOS7 下搭建 Harbor 倉庫以及登錄


修改配置文件之後,即可啟動,一條命令即可:

<code>./install.sh/<code>

如下圖, Harbor 正在啟動:


CentOS7 下搭建 Harbor 倉庫以及登錄


如下圖所示時,表示 Harbor 安裝成功


CentOS7 下搭建 Harbor 倉庫以及登錄


此時,我們可以通過訪問剛才設置的 ip 地址,訪問到 Harbor 界面


CentOS7 下搭建 Harbor 倉庫以及登錄


輸入默認賬號: admin ,密碼: Harbor12345 ,可以看到管理界面:

CentOS7 下搭建 Harbor 倉庫以及登錄

在這個過程中,常用的命令就是停止和安裝命令:

<code>docker-compose down -v   停止docker-compose up -d    啟動/<code>

可能出現的錯誤

1,無法訪問此頁:造成的原因,可能沒有把防火牆關閉,導致不能訪問 一條命令即可:

<code>臨時關閉防火牆: systemctl stop firewalld 永久關閉防火牆: systemctl disable firewalld.service/<code>

但是一般不建議把防火牆關掉。先寫在這裡,我後續再研究研究,看看都用到了哪兒些端口,等回來再更新

2,查看日誌時,發現錯誤: failed to connect to tcp://postgresql:5432 解決辦法:

<code>停止並刪除 docker 容器: docker-compose down -v啟動所有 docker 容器: docker-compose up -d/<code>

3,在停止並刪除docker容器時,發現錯誤:ERROR: network harbor_harbor has active endpoints 解決辦法:

<code>重啟 Docker service:service docker restart/<code>

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)

CentOS7 下搭建 Harbor 倉庫以及登錄

出現這個問題的原因是因為,我是後來才關閉的防火牆,這個時候需要重啟一下 docker 才生效。

<code>service docker restart /<code>

重啟docker之後,再運行命令:

<code>./install.sh/<code>

問題解決。 以上是 CentOS7 下搭建 Harbor 倉庫的過程,接下來說說使用 Docker 以 HTTP 方式登錄 Harbor 倉庫

Docker 登錄 Harbor 倉庫( HTTP 方式)

Docker 登錄到 Harbor 倉庫時,不管是使用 http 協議還是使用 https 協議,都需要修改一些配置。 來介紹一下,在使用 http 協議時,需要進行什麼哪些配置。 首先,確定自己的 Harbor 倉庫使用的是 http 協議,在 harbor.cfg 文件中就可以看到:


CentOS7 下搭建 Harbor 倉庫以及登錄


查找 docker 的服務文件,使用命令:

<code>systemctl status docker/<code>

可以看到 docker 的服務文件在 /etc/systemd/system 目錄下。


CentOS7 下搭建 Harbor 倉庫以及登錄


接下來我們需要去編輯 docker.service 文件,並進行一些修改,在 ExecStart 處,添加 –insecure-registry 參數

<code>--insecure-registry=reg.zll.com( Harbor地址, harbor.cfg 文件中的 hostname 項)/<code>

修改完成如下圖:

CentOS7 下搭建 Harbor 倉庫以及登錄

重新加載 service 文件,重啟 docker 服務:

<code>systemctl daemon-reloadsystemctl restart docker/<code>

在圖中可以看到, Harbor 倉庫我是使用的域名,所以還需要在 hosts 文件中做一些配置,如果使用的是 ip 地址,則此步驟可以忽略

<code>編輯 hosts 文件: vi /etc/hosts將 Harbor 地址寫入到 hosts 文件中: 192.168.243.138 reg.zll.com#以我這次的配置為例,具體可以靈活變動/<code> 

此時,相關步驟便結束了,我們可以在 Docker 客戶端使用命令進行登錄

<code>docker login [ ip 地址或域名]( Harbor 地址, harbor.cfg 文件中的 hostname 項)//根據提示分別輸入用戶名和密碼/<code>

可以看到,此時 Docker 可以登錄到 Harbor 倉庫上面了。

CentOS7 下搭建 Harbor 倉庫以及登錄

因為使用的是 http 協議登陸的,所以會有一個警告,對於實驗環境來說,是可以忽略的。

可能遇到的問題:

Error response from daemon: Get http://reg.zll.com/v2/: dial tcp 192.168.243.138:80: connect: connection refused 原因是因為在修改了 hosts 文件之後,沒有重新載入 docker ,再運行一下命令即可:

<code>systemctl daemon-reloadsystemctl restart docker/<code>

關於 Docker 登錄 Harbor 倉庫( HTTP 方式)到此便結束了 以上,感謝您的閱讀~


分享到:


相關文章: