Docker——Harbor私有倉庫的搭建部署

什麼是Harbor?

Harbor被部署多個docker容器(多個docker容器組成),統稱爲harbor,因此可以部署在任何支持Docker的Linux發行版本上。

Habor是由VMWare公司開源的容器鏡像倉庫。事實上,Habor是在Docker Registry上進行了相應的企業級擴展,從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理用戶界面,基於角色的訪問控制 ,AD/LDAP集成以及審計日誌等,足以滿足基本企業需求。
官方地址:https://vmware.github.io/harbor/cn/

Harbor私有倉庫支持圖形化界面,會提供一個web頁面

registry支持字符界面

HARBOR是一個docker私有倉庫構建程序,功能非常強大:

  1. 支持多租戶簽名和認證

    2. 支持安全掃描和風險分析
        3. 支持日誌審計
        4. 基於角色的訪問控制
        5. 支持可擴展的API和GUI
        6. Image replication between instances
        7. 國際化做的很好(目前僅支持英文和中文)

各組件功能如下:

harbor-adminserver:配置管理中心
harbor-dbMysql:數據庫
harbor-jobservice:負責鏡像複製
harbor-log:記錄操作日誌
harbor-ui:Web管理頁面和API
nginx:前端代理,負責前端頁面和鏡像上傳/下載轉發
redis:會話
registry:鏡像存儲

一、部署Harbor服務

節點 IP 安裝服務
Harbor服務端 192.168.11.133 docker-ce、docker-compose、Harbor
Client客戶端 192.168.11.141 docker-ce

兩個節點均已安裝部署Docker-ce

軟件包

百度網盤鏈接:https://pan.baidu.com/s/1IkHJYGqgd5jVkxlQfJROMw
提取碼:e8ni

1、安裝Compose及Harbor

1)安裝Compose

#上傳compose包並添加權限

[root@localhost ~]# chmod +x docker-compose

#將docker-compose移至/usr/bin/目錄下便於系統識別

[root@localhost ~]# mv docker-compose /usr/bin/

2)安裝Harbor

#下載並解壓harbor程序

下載Harbor安裝程序:wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

#這裏我們已經提前下載好並上傳,直接解壓即可

[root@localhost ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

#切換到harbor目錄中,可以看到有install.sh腳本,還有.yml結尾的編排文件

[root@localhost ~]# cd /usr/local/harbor

在這裏插入圖片描述
#配置 Harbor 參數文件

裏面的信息方便變量直接提取

[root@localhost harbor]# vim harbor.cfg
hostname = 192.168.11.133	#改爲自己節點的的IP, harpor服務端的IP

在這裏插入圖片描述

關於 Harbor.cfg 配置文件中有兩類參數:所需參數和可選參數

(1)所需參數:這些參數需要在配置文件 Harbor.cfg 中設置。如果用戶更新它們並運行 install.sh腳本重新安裝 Harbour,參數將生效。

具體參數如下:

****hostname****:用於訪問用戶界面和 register 服務。它應該是目標機器的 IP 地址或完全限 定的域名(FQDN)。例如 192.168.195.128 或 hub.kgc.cn。不要使用 localhost 或 127.0.0.1 爲主機名。

****ui_url_protocol****:(http 或 https,默認爲 http)用於訪問 UI 和令牌/通知服務的協議。如果公證處於啓用狀態,則此參數必須爲 https。

****max_job_workers****:鏡像復製作業線程。

****db_password****:用於db_auth 的MySQL數據庫root 用戶的密碼。

****customize_crt****:該屬性可設置爲打開或關閉,默認打開。打開此屬性時,準備腳本創建私鑰和根證書,用於生成/驗證註冊表令牌。當由外部來源提供密鑰和根證書時,將此屬性設置爲 off。

****ssl_cer****t:SSL 證書的路徑,僅當協議設置爲 https 時才應用。

****ssl_cert_key****:SSL 密鑰的路徑,僅當協議設置爲 https 時才應用。

****secretkey_path****:用於在複製策略中加密或解密遠程 register 密碼的密鑰路徑。

(2)可選參數

這些參數對於更新是可選的,即用戶可以將其保留爲默認值,並在啓動 Harbor 後在 Web UI 上進行更新。如果進入 Harbor.cfg,只會在第一次啓動 Harbor 時生效,隨後對這些參數 的更新,Harbor.cfg 將被忽略。

注意:如果選擇通過UI設置這些參數,請確保在啓動Harbour後立即執行此操作。具體來說,必須在註冊或在 Harbor 中創建任何新用戶之前設置所需的auth_mode。當系統中有用戶時(除了默認的 admin 用戶),auth_mode 不能被修改。

具體參數如下:

****Email****:Harbor需要該參數才能向用戶發送“密碼重置”電子郵件,並且只有在需要該功能時才需要。請注意,在默認情況下SSL連接時沒有啓用。如果SMTP服務器需要SSL,但不支持STARTTLS,那麼應該通過設置啓用SSL email_ssl = TRUE。

****harbour_admin_password****:管理員的初始密碼,只在Harbour第一次啓動時生效。之後,此設置將被忽略,並且應 UI中設置管理員的密碼。請注意,默認的用戶名/密碼是 admin/Harbor12345。

****auth_mode****:使用的認證類型,默認情況下,它是 db_auth,即憑據存儲在數據庫中。對於LDAP身份驗證,請將其設置爲 ldap_auth。

****self_registration****:啓用/禁用用戶註冊功能。禁用時,新用戶只能由 Admin 用戶創建,只有管理員用戶可以在 Harbour中創建新用戶。注意:當 auth_mode 設置爲 ldap_auth 時,自注冊功能將始終處於禁用狀態,並且該標誌被忽略。

****Token_expiration****:由令牌服務創建的令牌的到期時間(分鐘),默認爲 30 分鐘。

****project_creation_restriction****:用於控制哪些用戶有權創建項目的標誌。默認情況下, 每個人都可以創建一個項目。如果將其值設置爲“adminonly”,那麼只有 admin 可以創建項目。

****verify_remote_cert****:打開或關閉,默認打開。此標誌決定了當Harbor與遠程 register 實例通信時是否驗證 SSL/TLS 證書。將此屬性設置爲 off 將繞過 SSL/TLS 驗證,這在遠程實例具有自簽名或不可信證書時經常使用。另外,默認情況下,Harbour 將鏡像存儲在本地文件系統上。在生產環境中,可以考慮使用其他存儲後端而不是本地文件系統,如 S3、Openstack Swif、Ceph 等。但需要更新 common/templates/registry/config.yml 文件。

#啓動Harbor

[root@localhost harbor]# sh install.sh		#執行腳本後等待安裝

在這裏插入圖片描述
#Harbor安裝完成,查看啓動的鏡像和容器
在這裏插入圖片描述
在這裏插入圖片描述

#也可以使用docker-compose查看容器

注意:docker-compose只能在harbor的編排目錄中使用(存放yml編排文件目錄)

在這裏插入圖片描述

2、Harbor的Web頁面,上傳鏡像

1)登錄Harbor

#打開瀏覽器訪問Harbor服務端的IP:http://192.168.11.133
在這裏插入圖片描述
#用戶名及密碼在harbor.cfg可以查看及配置
在這裏插入圖片描述
#輸入密碼後登錄成功,可以在裏面進行相應的創建操作
在這裏插入圖片描述

2)創建項目

在這裏插入圖片描述

3)測試上傳/下載鏡像

打標籤:docker tag SOURCE_IMAGE[:TAG] 192.168.11.133/testproject/IMAGE[:TAG]

上傳:docker push 192.168.11.133/testproject/IMAGE[:TAG]

#目前新創建的項目,裏面沒有任何鏡像
在這裏插入圖片描述
#在本地登錄harbor字符界面

[root@localhost harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1/

在這裏插入圖片描述
#先下載一個鏡像用於測試

[root@localhost harbor]# docker pull cirros

在這裏插入圖片描述
#修改標籤

[root@localhost harbor]# docker tag cirros:latest 127.0.0.1/testproject/cirros:v1	

cirros:latest:鏡像

127.0.0.1:表示倉庫的IP地址,這裏填寫127.0.0.1是因爲此次是從本地登錄的harbor

testproject:表示項目名稱

cirros:v1:上傳至倉庫定義的鏡像名稱及標籤

在這裏插入圖片描述

#上傳鏡像至私有倉庫

[root@localhost harbor]# docker push 127.0.0.1/testproject/cirros:v1

#到Web頁面查看上傳的鏡像
在這裏插入圖片描述

3、客戶端測試下載/上傳鏡像

1)遠程登錄私有倉庫

#加載私有倉庫路徑,指定私有倉庫IP

[root@client ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.11.133 --containerd=/run/containerd/containerd.sock
[root@client ~]# systemctl daemon-reload
[root@client ~]# systemctl restart docker

在這裏插入圖片描述

#登錄私有倉庫

[root@client ~]# docker login -u admin -p Harbor12345 http://192.168.11.133

2)下載私有倉庫的鏡像

[root@client ~]# docker pull 192.168.11.133/testproject/cirros:v1

在這裏插入圖片描述

3)上傳鏡像至私有倉庫

#先從共有倉庫下載一個鏡像測試上傳

[root@client ~]# docker pull nginx 

#修改標籤

[root@client ~]# docker tag nginx:latest 192.168.11.133/testproject/nginx:v1

在這裏插入圖片描述

#上傳鏡像至私有倉庫

[root@client ~]# docker push 192.168.11.133/testproject/nginx:v1

#到Web頁面查看上傳的鏡像
在這裏插入圖片描述

二、維護管理Harbor

可以使用 docker-compose 來管理 Harbor。一些有用的命令如下所示,必須在與 docker-compose.yml 相同的目錄中運行

1、修改 Harbor.cfg 配置文件

要更改 Harbour 的配置文件時,請先停止現有的 Harbor 實例並更新 Harbor.cfg;然後運行 prepare 腳本來填充配置;最後重新創建並啓動 Harbor 的實例

1)關閉所有容器

[root@localhost harbor]# docker-compose down -v

2)修改參數文件

只能修改可選參數,修改後進行重載(按實際需求更改)

[root@localhost harbor]# vim harbor.cfg

3)重新加載配置文件,重啓服務

在這裏插入圖片描述

[root@localhost harbor]# ./prepare
[root@localhost harbor]# systemctl restart docker
[root@localhost harbor]# docker-compose up -d     	   #啓動容器服務

2、Web界面操作

1)創建用戶

在這裏插入圖片描述

2)將用戶添加至項目

進入項目中,點擊成員,新加成員
在這裏插入圖片描述

3)使用新成員遠程登錄倉庫並下載/上傳鏡像

#退出已登陸的賬號

[root@client ~]# docker logout http://192.168.11.133

#使用新成員賬戶登錄

[root@client ~]# docker login http://192.168.11.133
Username: test-zhangsna
Password: 

在這裏插入圖片描述
#下載harbor倉庫內的鏡像

[root@client ~]# docker pull 192.168.11.133/testproject/cirros:v1

#上傳鏡像
改標籤

[root@client ~]# docker tag nginx:latest 192.168.11.133/testproject/nginx:v2

在這裏插入圖片描述
上傳至私有倉庫

[root@client ~]# docker push 192.168.11.133/testproject/nginx:v2

#打開Web界面,刷新查看鏡像
在這裏插入圖片描述

3、移除 Harbor 服務容器同時保留鏡像數據/數據庫

在Harbor服務器上操作

[root@harbor ~]# docker-compose down -v

如需重新部署,需要移除 Harbor 服務容器全部數據(持久數據,如鏡像,數據庫等在宿主機的/data/目錄下,日誌在宿主機的 ) /var/log/Harbor/目錄下

[root@harbor ~]# cd /var/log/harbor/
[root@harbor harbor]# cd rm -rf /data/database/
[root@harbor harbor]# rm -rf /data/registry/

如需遷移,只需要將/data目錄拷貝就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章