centos harbor搭建

Harbor介紹

harbor是一個docker私有鏡像倉庫,雖然docker官方提供了公共的鏡像倉庫(Docker Hub),但是從安全和效率等方面考慮,部署私有環境內的Registry也是非常必要的。Harbor是由VMware公司開源的企業級的Docker Registry管理項目。

docker官方提供了一個私有鏡像倉庫 docker Registry,安裝部署容易,安裝一個Registry容器就可以使用了。

但是Registry有以下缺點:

# 沒有圖形界面

# 沒有項目管理

# 沒有用戶權限控制

# 看不到鏡像操作記錄
 

Harbor的優勢:

圖形管理界面。

按項目管理鏡像。

獨立的用戶管理,不同用戶可以操作不同鏡像,細粒度的權限控制,包含create、push 、pull、delete。

鏡像管理。

標籤管理。

操作日誌管理。

【Harbor 安裝步驟】:

第1步:安裝harbor前期做準備

使用harbor要先安裝docker及docker-compose, docker及docker-compose安裝教程請參考 【centos 7使用國內源安裝docker及docker-compose

docker與docker-compose安裝教程地址:https://www.cnblogs.com/yyee/p/12905165.html

第2步:下載 Harbor離線安裝包

從harbor官網下載離線安裝包,下載地址:https://github.com/goharbor/harbor/releases

下載當前最新版本harbor 1.10.1,離線包大小爲658M 。

  下載完離線包之後,將離線安裝包【harbor-offline-installer-v1.10.1.tgz】上傳到centos服務器。比如將文件上傳到 centos的 /tools/harbor/harbor-offline-installer-v1.10.1.tgz 

第3步,創建https證書

複製代碼

# 創建證書目錄,並賦予權限
mkdir -p /cert/harbor
chmod -R 777 /cert/harbor
cd /cert/harbor

# whereis openssl 檢查是否有安裝openssl,如果沒有先安裝openssl組件,如果有就不用安裝了
whereis openssl
yum install openssl

# 創建服務器證書密鑰文件harbor.key
openssl genrsa -des3 -out harbor.key 2048
# 輸入密碼,確認密碼,自己隨便定義,但是要記住,後面會用到。

# 創建服務器證書的申請文件harbor.csr
openssl req -new -key harbor.key -out harbor.csr
# 輸入密鑰文件的密碼, 然後一路回車

# 備份一份服務器密鑰文件
cp harbor.key harbor.key.org

# 去除文件口令
openssl rsa -in harbor.key.org -out harbor.key
# 輸入密鑰文件的密碼

# 創建一個自當前日期起爲期十年的證書 harbor.crt
openssl x509 -req -days 3650 -in harbor.csr -signkey harbor.key -out harbor.crt

複製代碼

  

第4步,解壓軟件包,修改配置文件

 先進入harbor離線包上傳的目錄,解壓離線包到/usr/local/harbor下

tar zxf /tools/harbor/harbor-offline-installer-v1.10.1.tgz  -C /usr/local/
ls /usr/local/harbor

 解壓軟件包之後有這些文件及目錄:

 配置harbor.yml 文件

vi /usr/local/harbor/harbor.yml

 

主要修改以下地方:

複製代碼

# 將hostname改成本機IP或域名,不要用localhost,127.0.0.1或0.0.0.0,冒號後面都有一個空格
hostname: 192.168.0.101
ui_url_protoc0l: https

# 將http端口改成10080,因爲默認用的80端口已經被佔用,http可以指定任意端口
http:
  port: 10080
# 配置https的端口,只能使用443端口,更改證書路徑,證書路徑爲剛剛生成的https證書的實際路徑
https:
  port: 443
  certificate: /cert/harbor/harbor.crt
  private_key: /cert/harbor/harbor.key
# 修改後臺管理密碼
harbor_admin_password: harbor12345
# harbor的內部數據庫密碼
database:
  password: root123
# 修改harbor數據存儲路徑與日誌存儲路徑,目錄要先創建好並賦予777權限
data_volume: /data/harbor-data
# 修改日誌存放路徑,默認路徑爲/var/log/harbor
log:
  local:
    localtion: /data/harbor-log

複製代碼

 

    

 第5步,安裝harbor

執行harbor安裝腳本

cd /usr/local/harbor
./install.sh

 

安裝的時候如果出現下面的異常,是因爲關閉防火牆導致,需要重啓docker

ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-61f0da3c6876 -j RETURN: iptables: No chain/target/match by that name.

出現上面這種錯誤,要重啓docker,然後重新安裝harbor

systemctl daemon-reload
systemctl restart docker.service
cd /usr/local/harbor 
./install.sh

 

安裝成功後輸出下面的信息:

 在瀏覽器地址輸入:https://192.168.0.101:10443,打開harbor登錄頁面

用戶名:admin,密碼:harbor12345

 

 登錄成功後進入後臺主頁:

   

第6步,docker信任配置

 要讓docker可以訪問harbor,需要將harbor域名或IP設置爲docker的受信任倉庫,修改配置文件 /etc/docker/daemon.json ,增加docker受信任IP或域名。

vi  /etc/docker/daemon.json

 

追加內容:

{
    "insecure-registries": ["192.168.0.101:10080"]
}

 

 

拷貝https證書文件harbor.crt到 /etc/docker/certs.d/serverIp 文件夾。每個docker都要拷貝證書文件。

mkdir –p /etc/docker/certs.d/192.168.0.101
cp /cert/harbor/harbor.crt  /etc/docker/certs.d/192.168.0.101/ca.crt
#注意,拷貝過去的證書文件名爲 ca.crt 

 

重啓docker

#重啓docker
systemctl daemon-reload
systemctl restart docker.service

 

重啓harbor

cd /usr/local/harbor
./prepare
docker-compose down
docker-compose up -d

 

 第7步,將本地業務鏡像push到harbor

首先在harbor中新建一個項目,項目名稱爲【eshop】

 

  用docker登錄harbor

docker login 192.168.0.101:10080
#輸入用戶名 admin
#輸入密碼

 

登錄成功輸出以下信息: 

 

給本地鏡像打上tag標記,打標記的時候要加上項目名稱

# docker tag 本地鏡像名:版本號 ip:port/項目名稱/遠程鏡像名:版本號,如果不加版本號表示最新版本
docker tag demo1.mvcone:v1.0.1 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1
# 上傳鏡像到harbor
docker push 192.168.0.101:10080/eshop/demo1.mvconev:v1.0.1

push成功輸入以下信息:

   

在harbor後臺管理中查看eshop項目下的鏡像

  

點擊鏡像名稱,查看鏡像版本號

   

【上傳鏡像遇到的坑: 】

如果不在harbor中新建項目,或者創建tag的時候不加項目名稱,在上傳鏡像時會發生錯誤:received unexpected HTTP status: 500 Internal Server Error ,所以docker tag 打標籤的時候要一定要加上項目名稱。

#push不加項目名稱的鏡像出現錯誤,下面是錯誤方法:
# docker tag 本地鏡像名:v1.0.1 ip:port/遠程鏡像名:v1.0.1
docker tag demo1.mvcone:v1.0.1 192.168.0.101:10080/demo1.mvcone:v1.0.1
# 上傳鏡像到harbor
docker push 192.168.0.101:10080/demo1.mvcone:v1.0.1

 

這樣在push鏡像時出現500 Internal Server Error錯誤: 

  

第8步,爲剛纔上傳到harbor的鏡像創建一個容器  

eshop/demo1.mvcone鏡像已經上傳到harbor,現在要用eshop/demo1.mvcone鏡像創建一個容器,測試一下容器是否跑得起來。

步驟:

(1) 刪除本地鏡像 192.168.0.101:10080/eshop/demo1.mvcone 

docker rmi 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1

 

(2)從harbor上 拉取eshop/demo1.mvcone 鏡像到本地

docker pull 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1

#從harbor上拉取像鏡要寫全路徑, IP地址:端口/項目名稱/鏡像名:版本號

 

(3) 創建 192.168.0.101:10080/eshop/demo1.mvcone 鏡像的容器,以8001端口運行

docker run -d --name my.eshop.demo1.mvcone -p 8001:50001 -v /appdata/mvcone 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1

--name 容器名 

-d 後臺運行容器

-p 參數:8001是docker對外暴露的端口,可以任意指定,50001是Dockerfile文件配置的docker內部運行端口,不可以隨意指定。

-v 參數,數據卷,容器的數據存放路徑。

192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1 是鏡像名

 

(4) 查看docker中是否運行着剛剛創建的容器

docker ps 

 

 

   從截圖上可以看出 my.ehop.demo1.mvcone 容器已經創建並於處運行狀態。

 

(5) 用瀏覽器驗證容器運行項目的效果

     

 第9步,harbor停止/重啓/御載

 重啓harbor:

cd /usr/local/harbor
docker-compose down
./prepare   #配置文件有改動時需要執行
docker-compose up -d

 

關閉harbor

cd /usr/local/harbor
docker-compose down -v
# 或者
docker-compose stop

 

卸載Harbor

cd /usr/local/harbor
docker-compose stop
rm -rf /usr/local/harbor
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章