harbor可視化私有鏡像倉庫環(huán)境及服務(wù)部署示例
harbor 簡介
在實(shí)際生產(chǎn)運(yùn)維中,往往需要把鏡像發(fā)布到幾十、上百或更多的節(jié)點(diǎn)上。這時(shí)單臺(tái) Docker 主機(jī)上鏡像已無法滿足,項(xiàng)目越來越多,鏡像越來越多,都放到一臺(tái) Docker 主機(jī)上是不行的,我們需要一個(gè)鏡像Git倉庫一樣系統(tǒng)來統(tǒng)一管理鏡像。這里介紹的是一個(gè)企業(yè)級(jí)鏡像倉庫Harbor,將作為我們?nèi)萜髟破脚_(tái)的鏡像倉庫中心。
Harbor 是有 VMware 工資開源的容器鏡像倉庫。事實(shí)上,Harbor 是在Docker Rgestry 上進(jìn)行了相應(yīng)的企業(yè)擴(kuò)展,從而獲得了更加廣泛的應(yīng)用,這些新的企業(yè)級(jí)特性包括:管理用戶界面,基于角色的訪問控制,AD/LDAP 集成以及審計(jì)日志等,足以滿足基本企業(yè)需求。
Harbor 和 Registry 的比較
Harbor 和 Registry 都是 Docker 的鏡像倉庫,但是 Harbor 作為更多企業(yè)的選擇,是因?yàn)橄啾容^于 Registry 來說,它具有很多的優(yōu)勢。
- 提供分層傳輸機(jī)制,優(yōu)化網(wǎng)絡(luò)傳輸
Docker 鏡像是分層的,而如果每次傳輸都使用全量文件(所以用FTP的方式不適合),顯然不經(jīng)濟(jì)。必須提供識(shí)別分層傳輸?shù)臋C(jī)制,以UUID 為標(biāo)識(shí),確定傳輸?shù)膶?duì)象。
- 提供 WEB 界面,優(yōu)化用戶體驗(yàn)
只用鏡像的名字來進(jìn)行上傳下載顯然很不方便,需要有一個(gè)用戶界面可以支持登錄、搜索功能,包括區(qū)分公有、私有鏡像
- 支持水平擴(kuò)展集群
當(dāng)前用戶對(duì)鏡像的上傳下載操作集中在某服務(wù)器,需要對(duì)相應(yīng)的訪問壓力作分解。
- 良好的安全機(jī)制
企業(yè)中的開發(fā)團(tuán)隊(duì)有很多不同的職位,對(duì)于不同的職位人員,分配不同的權(quán)限,具有更好的安全性
Harbor 提供了基于角色的訪問控制機(jī)制,并通過項(xiàng)目來對(duì)鏡像進(jìn)行組織和訪問權(quán)限的控制。kubernetes 中通過 namespace 來對(duì)資源進(jìn)行隔離,在企業(yè)級(jí)應(yīng)用場景中,通過將兩者進(jìn)行結(jié)合可以有效將 kubernetes 使用的鏡像資源進(jìn)行管理和訪問控制,增強(qiáng)鏡像使用的安全性。尤其在多租戶場景下,可以通過租戶、namespace 和項(xiàng)目相結(jié)合的方式來實(shí)現(xiàn)對(duì)租戶鏡像資源的管理。
harbor 案例演示
環(huán)境準(zhǔn)備
準(zhǔn)備兩臺(tái)服務(wù)器,且均已部署 docker 服務(wù)
主機(jī)名 | 服務(wù) | IP |
---|---|---|
harbor-client | 客戶端(用于上傳鏡像) | 192.168.117.130 |
harbor-server | 服務(wù)端(用于存儲(chǔ)鏡像) | 192.168.117.131 |
服務(wù)部署
harbor-server 部署
#下載 epel-release 源 [root@harbor-server ~]# yum install -y epel-release #下載 python 軟件包管理系統(tǒng) [root@harbor-server ~]# yum install -y python-pip #更新 pip 安裝包 [root@harbor-server ~]# pip install --upgrade pip #安裝 docker-compose (docker 的編排工具) [root@harbor-server ~]# pip install docker-compose #下載 harbor 安裝包并解壓(github 上下載) [root@harbor-server ~]# yum install -y wget [root@harbor-server ~]# wget https://github.com/goharbor/harbor/releases/download/v2.1.1/harbor-offline-installer-v2.1.1.tgz [root@harbor-server ~]# tar xf harbor-offline-installer-v2.1.1.tgz #修改 harbor 的配置文件 [root@harbor-server ~]# mv harbor/harbor.yml.tmpl /harbor/harbor.yml [root@harbor-server ~]# vim harbor/harbor.yml hostname: 192.168.117.131 #本機(jī) IP #注釋掉以下內(nèi)容 # 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 #執(zhí)行 harbor 安裝腳本 [root@localhost harbor]# ./harbor/install.sh ……略…… ? ----Harbor has been installed and started successfully.---- #查看 harbor 的用戶和密碼 [root@localhost ~]# cat harbor/harbor.yml | grep admin # The IP address or hostname to access admin UI and registry service. # The initial password of Harbor admin # Remember Change the admin password from UI after launching Harbor. harbor_admin_password: Harbor12345
瀏覽器訪問 http://192.168.117.131:80 并登錄 harbor
上傳本地鏡像至harbor
新建項(xiàng)目
填寫項(xiàng)目名稱、分配存儲(chǔ)容量,該項(xiàng)目訪問級(jí)別如果沒有公開,在上傳鏡像時(shí)需要先登錄 harbor
harbor-client 上傳鏡像到 harbor
#修改 daemon.json 配置文件 [root@harbor-client ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://3290299n.mirror.aliyuncs.com"], #注:上下兩行用 “,” 分割 #添加下面的參數(shù)即可,docker-server 端IP和端口 "insecure-registries":["192.168.117.131:80"] } #重啟 docker 服務(wù) [root@harbor-client ~]# systemctl restart docker #修改 tomcat 鏡像名稱:項(xiàng)目名稱/鏡像名稱:標(biāo)簽 [root@harbor-client ~]# docker tag tomcat 192.168.117.131:80/tomcat/tomcat:harbor #項(xiàng)目 tomcat 沒有公開所以先登錄 harbor,在上傳鏡像 [root@harbor-client ~]# docker login 192.168.117.131:80 Username: admin Password: Harbor12345 [root@harbor-client ~]# docker push 192.168.117.131:80/tomcat/tomcat:harbor
瀏覽器訪問 harbor,查看 tomcat 項(xiàng)目下是否有剛剛上傳的鏡像
拉去 harbor 上的 tomcat 鏡像至本地
瀏覽器訪問 harbor,點(diǎn)擊 tomcat 項(xiàng)目、tomcat鏡像,復(fù)制拉去命令在本地執(zhí)行即可
#項(xiàng)目 tomcat 沒有公開所以先登錄 harbor,在拉取鏡像 [root@harbor-client ~]# docker login 192.168.117.131:80 Username: admin Password: Harbor12345 #鏡像拉去成功 [root@harbor-client ~]# docker pull 192.168.117.131:80/tomcat/tomcat@sha256:d9097a2878b148ddbdd69346dd902b55be74cf4271e1ac45a3bfb5273f93c181 sha256:d9097a2878b148ddbdd69346dd902b55be74cf4271e1ac45a3bfb5273f93c181: Pulling from tomcat/tomcat Digest: sha256:d9097a2878b148ddbdd69346dd902b55be74cf4271e1ac45a3bfb5273f93c181 Status: Downloaded newer image for 192.168.117.131:80/tomcat/tomcat@sha256:d9097a2878b148ddbdd69346dd902b55be74cf4271e1ac45a3bfb5273f93c181 192.168.117.131:80/tomcat/tomcat@sha256:d9097a2878b148ddbdd69346dd902b55be74cf4271e1ac45a3bfb5273f93c181 #查看鏡像 [root@harbor-client ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 6fa48e047721 10 months ago 507MB 192.168.117.131:80/tomcat/tomcat <none> 6fa48e047721 10 months ago 507MB
以上就是harbor可視化私有鏡像倉庫環(huán)境及服務(wù)部署示例的詳細(xì)內(nèi)容,更多關(guān)于harbor可視化私有鏡像倉庫環(huán)境部署的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
低版本Docker升級(jí)高版本Docker的詳細(xì)教程及成功避坑
如果我們使用docker來管理容器,那么保持docker引擎的更新將會(huì)是十分重要的,下面這篇文章主要給大家介紹了關(guān)于低版本Docker升級(jí)高版本Docker的詳細(xì)教程及成功避坑,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05使用Dockerfile部署nodejs服務(wù)的方法步驟
這篇文章主要介紹了使用Dockerfile部署nodejs服務(wù)的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01docker 查詢或獲取私有倉庫(registry)中的鏡像的方法
這篇文章主要介紹了docker 查詢或獲取私有倉庫(registry)中的鏡像的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05docker?gitea?drone實(shí)現(xiàn)超輕量級(jí)CI?CD實(shí)戰(zhàn)詳解
這篇文章主要為大家介紹了docker?gitea?drone實(shí)現(xiàn)超輕量級(jí)CI?CD實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼
這篇文章主要介紹了docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09docker部署MySQL時(shí)無法啟動(dòng)問題的解決方法
最近做項(xiàng)目,遇到這樣問題,docker中的mysql不能啟動(dòng),下面這篇文章主要給大家介紹了關(guān)于docker部署MySQL時(shí)無法啟動(dòng)問題的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01