Docker中Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)的搭建與使用
本章將和大家分享Docker倉(cāng)庫(kù)之Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)的搭建與使用。廢話不多說(shuō),下面我們直接進(jìn)入主題。
一、企業(yè)最愛(ài):Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)
Harbor是VMware公司開(kāi)源的一個(gè)企業(yè)級(jí)Docker Registry項(xiàng)目,項(xiàng)目地址:https://github.com/goharbor/harbor
Harbor是一個(gè)開(kāi)源的企業(yè)級(jí)Docker Registry服務(wù),它提供了一個(gè)安全、可信賴的倉(cāng)庫(kù)來(lái)存儲(chǔ)和管理Docker鏡像。
雖然Harbor和Registry都是私有鏡像倉(cāng)庫(kù)的選擇,但是Harbor的企業(yè)級(jí)特性更強(qiáng),因此也是更多企業(yè)級(jí)用戶的選擇。
Harbor實(shí)現(xiàn)了基于角色的訪問(wèn)控制機(jī)制,并通過(guò)項(xiàng)目來(lái)對(duì)鏡像進(jìn)行組織和訪問(wèn)權(quán)限的控制,也常常和K8S中的namespace結(jié)合使用。此外,Harbor還提供了圖形化的管理界面,我們可以通過(guò)瀏覽器來(lái)瀏覽,檢索當(dāng)前Docker鏡像倉(cāng)庫(kù),管理項(xiàng)目和命名空間。
二、一些準(zhǔn)備工作
1、安裝docker
如果還沒(méi)有安裝docker,那么請(qǐng)先安裝docker,已安裝則跳過(guò)。
[root@localhost ~]# docker -v Docker version 26.1.4, build 5650f9b
之前的博文我們已經(jīng)講解過(guò)Docker的安裝,此處已經(jīng)安裝過(guò)就不再安裝了。
2、安裝docker-compose
此處我采用的是離線安裝方式。
首先下載 docker-compose 到本地,下載地址:https://github.com/docker/compose/
下載鏈接:https://github.com/docker/compose/releases/download/v2.30.1/docker-compose-linux-x86_64
如果直接點(diǎn)擊下載比較慢的話,建議復(fù)制鏈接地址到迅雷下載,這樣可能會(huì)快一些。下載完成后,把它上傳到 Linux 服務(wù)器,如下所示:
接著把可執(zhí)行文件移到 Linux 系統(tǒng)命令目錄(/usr/local/bin/)下,并重命名為 “docker-compose” :mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
授權(quán):chmod +x /usr/local/bin/docker-compose
驗(yàn)證是否安裝成功:docker-compose --version
如果能正常顯示出正確的版本號(hào),說(shuō)明安裝成功了。
如果需要卸載,直接刪除即可:sudo rm /usr/local/bin/docker-compose
三、Harbor安裝與配置
1、下載 Harbor 離線安裝包
通過(guò) GitHub下載離線安裝包,下載地址:https://github.com/goharbor/harbor
下載鏈接:https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
如果直接點(diǎn)擊下載比較慢的話,建議復(fù)制鏈接地址到迅雷下載,這樣可能會(huì)快一些。
2、把安裝包上傳到 Linux 服務(wù)器
下載完成后,把離線安裝包上傳到 Linux 服務(wù)器,如下所示:
3、將安裝包解壓出來(lái)
tar -zxvf harbor-offline-installer-v2.11.1.tgz
4、修改 harbor.yml 配置文件
進(jìn)入解壓后的文件夾,復(fù)制 harbor.yml.tmpl 文件,并重命名為 harbor.yml ,如下所示:
# 拷貝并重命名 cp harbor.yml.tmpl harbor.yml # 修改配置文件 vim harbor.yml
修改配置文件,需要設(shè)置hostname、端口、admin用戶的初始登錄密碼等,標(biāo)紅色的表示修改的部分:
# The IP address or hostname to access admin UI and registry service. # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients. # 修改主機(jī)名,如果沒(méi)有域名就使用本機(jī)IP地址 hostname: 192.168.4.250 # 配置啟動(dòng)端口號(hào),默認(rèn)是80端口,此處我把它改成 5001 # http related config http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 5001 # 如果沒(méi)有申請(qǐng)證書(shū),需要把 https 這塊相關(guān)的全部給它注釋掉 # https related config # https: # https port for harbor, default is 443 # port: 443 # The path of cert and key files for nginx # certificate: /your/certificate/path # private_key: /your/private/key/path # 啟動(dòng)成功后,admin用戶的初始登錄密碼 harbor_admin_password: admin123456
5、修改 docker 守護(hù)進(jìn)程配置文件
vim /etc/docker/daemon.json
加上下面這一句,讓 Docker 認(rèn)為該地址是安全的,這里的 “your-server-ip” 請(qǐng)?zhí)鎿Q為你的服務(wù)器外網(wǎng)IP地址,“port” 替換為你的端口:
{ "insecure-registries": [ "your-server-ip:port" ] }
“insecure-registries”:不安全的注冊(cè)表,用來(lái)配置 Docker 可以通過(guò) HTTP 而非 HTTPS 連接的不安全鏡像倉(cāng)庫(kù)地址,即:配置可信任地址。如果配置為0.0.0.0/0,則表示信任所有地址的所有私有倉(cāng)庫(kù)。
示例:
保存成功后,重新加載配置并重啟Docker服務(wù):
sudo systemctl daemon-reload sudo systemctl restart docker
6、啟動(dòng)安裝 Harbor
配置文件修改成功后,執(zhí)行 install.sh 腳本進(jìn)行安裝 Harbor
./install.sh
提示安裝成功,接下來(lái)就可以訪問(wèn) Harbor 了。通過(guò) IP+端口 訪問(wèn):http://192.168.4.250:5001
訪問(wèn)成功,由于 Harbor 是通過(guò) Docker 管理的,所以啟動(dòng)非常方便。如果首頁(yè)訪問(wèn)成功說(shuō)明 Docker 私有倉(cāng)庫(kù)已經(jīng)部署成功了。
四、Harbor Web頁(yè)面操作說(shuō)明
默認(rèn)用戶名是admin,密碼是啟動(dòng)時(shí)設(shè)置的密碼:admin123456
登錄成功進(jìn)入主頁(yè)面,從系統(tǒng)首頁(yè)可以看到系統(tǒng)分為三個(gè)菜單:項(xiàng)目、日志、系統(tǒng)管理。
1、項(xiàng)目
項(xiàng)目管理顧名思義就是用來(lái)管理項(xiàng)目的??梢詾槊恳粋€(gè)開(kāi)發(fā)項(xiàng)目創(chuàng)建一個(gè)私有項(xiàng)目庫(kù),然后把 Docker 鏡像存儲(chǔ)到指定的項(xiàng)目中,為每個(gè)項(xiàng)目實(shí)現(xiàn)項(xiàng)目鏡像隔離。創(chuàng)建項(xiàng)目的時(shí)候,Harbor提供了公開(kāi)庫(kù)(public repository)和私有庫(kù)(private repository)兩種類型的鏡像存儲(chǔ)空間。
通過(guò)詳情信息可以看到:公開(kāi)庫(kù)中的鏡像是對(duì)所有用戶可見(jiàn)和可訪問(wèn)的,任何人都可以查看和拉取其中的鏡像。而私有庫(kù)中的鏡像則需要登錄才能訪問(wèn)控制,只有被授權(quán)的用戶或團(tuán)隊(duì)才能夠查看、拉取和推送鏡像。 可以根據(jù)需要?jiǎng)?chuàng)建相關(guān)的項(xiàng)目。
項(xiàng)目創(chuàng)建成功后,可以點(diǎn)擊進(jìn)入項(xiàng)目。在里面可以為每個(gè)項(xiàng)目單獨(dú)設(shè)置不同的配置信息??梢詾槊恳粋€(gè)項(xiàng)目添加成員信息。
角色權(quán)限說(shuō)明:
- 項(xiàng)目管理員(Project Administrator):擁有項(xiàng)目的最高權(quán)限,可以對(duì)項(xiàng)目進(jìn)行全面管理,包括創(chuàng)建和刪除項(xiàng)目、管理項(xiàng)目成員和權(quán)限、配置項(xiàng)目屬性、查看項(xiàng)目日志等。
- 維護(hù)人員(Maintainer):類似于項(xiàng)目管理員,但權(quán)限稍低,通常用于協(xié)助管理項(xiàng)目,可以進(jìn)行項(xiàng)目的部分管理操作,如添加和刪除鏡像、配置鏡像的復(fù)制和同步規(guī)則等。
- 開(kāi)發(fā)者(Developer):具有對(duì)項(xiàng)目中鏡像倉(cāng)庫(kù)的讀寫(xiě)權(quán)限,可以拉取、推送和刪除鏡像,以及管理部分項(xiàng)目配置,但不能進(jìn)行項(xiàng)目管理操作。
- 訪客(Guest):只具有對(duì)項(xiàng)目中鏡像倉(cāng)庫(kù)的只讀權(quán)限,可以查看鏡像和元數(shù)據(jù),但無(wú)法對(duì)鏡像進(jìn)行修改或刪除操作。通常用于分享項(xiàng)目或鏡像給外部團(tuán)隊(duì)或用戶。
- 受限訪客(Restricted Guest):是一種更加受限的訪客角色,通常用于提供給外部用戶或系統(tǒng),具有對(duì)項(xiàng)目中鏡像倉(cāng)庫(kù)的只讀權(quán)限,但可能會(huì)限制訪問(wèn)的部分內(nèi)容或功能。
在右上角顯示推送命令,可以通過(guò)提示命令進(jìn)行 docker 鏡像推送。
2、日志
日志菜單就是記錄用戶操作日志信息的。
3、系統(tǒng)管理
系統(tǒng)管理主要用來(lái)管理 Harbor 用戶人員信息、鏡像倉(cāng)庫(kù)的各種配置、權(quán)限和系統(tǒng)設(shè)置。
五、Docker命令使用私有倉(cāng)庫(kù)
1、登錄
登錄私有倉(cāng)庫(kù):
docker login -u admin -p admin123456 http://192.168.4.250:5001
通過(guò)輸出可以發(fā)現(xiàn)登錄成功了。認(rèn)證信息存儲(chǔ)在 ~/.docker/config.json 文件中,只要登錄信息存在,登錄會(huì)一直生效不需要每次推送拉取之前都登錄。
注意:如果未修改 docker 守護(hù)進(jìn)程配置文件,那么登錄時(shí)可能會(huì)報(bào)以下錯(cuò)誤。
[root@localhost ~]# docker login -u admin -p admin123456 http://192.168.4.250:5001 WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://192.168.4.250:5001/v2/": http: server gave HTTP response to HTTPS client
這是由于,docker認(rèn)為這個(gè)地址是不安全的,所以需要在docker守護(hù)進(jìn)程配置文件中把該地址配置為可信任地址。
vim /etc/docker/daemon.json
加上下面這一句,讓 Docker 認(rèn)為該地址是安全的,這里的 “your-server-ip” 請(qǐng)?zhí)鎿Q為你的服務(wù)器外網(wǎng)IP地址,“port” 替換為你的端口:
{ "insecure-registries": [ "your-server-ip:port" ] }
“insecure-registries”:不安全的注冊(cè)表,用來(lái)配置 Docker 可以通過(guò) HTTP 而非 HTTPS 連接的不安全鏡像倉(cāng)庫(kù)地址,即:配置可信任地址。如果配置為0.0.0.0/0,則表示信任所有地址的所有私有倉(cāng)庫(kù)。
示例:
保存成功后,重新加載配置并重啟Docker服務(wù):
sudo systemctl daemon-reload sudo systemctl restart docker
配置成功后,再次嘗試登錄,這時(shí)候應(yīng)該就可以登錄成功了。
2、推送鏡像
在項(xiàng)目中標(biāo)記鏡像:
docker tag SOURCE_IMAGE[:TAG] 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]
示例:
docker tag nginx:latest 192.168.4.250:5001/blog_project/nginx:v1
推送鏡像到指定項(xiàng)目:
docker push 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]
示例:
docker push 192.168.4.250:5001/blog_project/nginx:v1
查看 Harbor 倉(cāng)庫(kù),推送成功。
3、拉取鏡像
通過(guò)另一臺(tái)服務(wù)器,使用 docker pull 從私有倉(cāng)庫(kù)拉取鏡像:
docker pull 192.168.4.250:5001/blog_project/nginx:v1
拉取成功,查看下載數(shù),發(fā)現(xiàn)已經(jīng)更新了:
4、退出登錄
docker logout 192.168.4.250:5001
六、其他補(bǔ)充
首先我們需要先進(jìn)入解壓后的 harbor 文件夾:
cd ./Software/ cd ./harbor/
到此這篇關(guān)于Docker中Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)的搭建與使用的文章就介紹到這了,更多相關(guān)Docker Harbor倉(cāng)庫(kù)搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐小結(jié)
這篇文章主要介紹了Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09如何通過(guò)vs2017的Dockerfile來(lái)生成鏡像
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)vs2017的Dockerfile來(lái)生成鏡像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Docker 數(shù)據(jù)卷及數(shù)據(jù)容器詳細(xì)介紹及示例
這篇文章主要介紹了Docker 數(shù)據(jù)卷及數(shù)據(jù)容器詳細(xì)介紹及示例的相關(guān)資料,Docker 很強(qiáng)大,不僅部署維護(hù)提高效率,docker和宿主之間的數(shù)據(jù)共享以及docker間的數(shù)據(jù)共享需要好好研究一下,需要的朋友可以參考下2016-11-11樹(shù)莓派4b ubuntu19 server 安裝docker-ce的安裝步驟
這篇文章主要介紹了樹(shù)莓派4b ubuntu19 server 安裝docker-ce的安裝步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11使用docker部署grafana+prometheus配置
這篇文章主要介紹了docker部署grafana+prometheus配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12使用dockercompose搭建springboot-mysql-nginx應(yīng)用
這篇文章主要介紹了使用dockercompose搭建springboot-mysql-nginx應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03Docker可視化面板Portainer的實(shí)現(xiàn)
Portainer是一個(gè)免費(fèi)的容器管理工具,支持Docker環(huán)境的可視化管理,通過(guò)Portainer,用戶可以輕松地在Windows或Linux容器中部署服務(wù),大大簡(jiǎn)化了Docker容器的管理工作,感興趣的可以了解一下2024-11-11