Harbor私有倉庫建立+原理

Harbor介紹

部署Harbor所依賴的Docker Compose服務
部署Harbor服務
Harbor日常操作管理
Harbor管理生命週期

Harbor是VMware公司開源的企業級Docker Registry項目

Harbor的優勢

基於角色控制
基於鏡像的複製策略
支持LDAP/AD
圖像刪除和垃圾收集
圖形UI
審計
RESTful API
Proxy
通過一個前置的反向代理統一接受瀏覽器,Docker客戶端的請求,並將請求轉發給後端不同的服務
Registry
負責儲存Docker鏡像,並處理docker push/pull 命令
Core services
Harbor的核心功能,包括UI,webhook,token 服務
Database
爲core service提供數據庫服務
Log collector
負責收集其他組件的log,供日後進行分析

Docker私有倉庫架構拓撲

Harbor私有倉庫建立+原理
用戶請求通過Proxy反向代理訪問Core services,UI提供web界面,token令牌,你第一次登錄之後服務器會給你一串序列號,下次直接登錄就行,你需要下載的鏡像信息,屬性,都存放在後面的database,再通過webhook回調去registry私有倉庫調取鏡像。這一系列的操作都存放在日誌中。

-------------------------------搭建harbor私有倉庫----------------------------------

harbor被部署爲多個docker容器,因此可以部署在任何支持docker的linux的發行版上
我們還需要docker-compose編排工具,編排工具執行了多個docker容器的操作
[root@localhost ~]# mount.cifs //192.168.100.25/compose /abc/
Password for root@//192.168.100.25/compose:  
[root@localhost ~]# cd /abc/
[root@localhost abc]# ls
consul_0.9.2_linux_amd64.zip  consul-template_0.19.3_linux_amd64.zip  docker-compose
[root@localhost abc]# cp docker-compose /usr/local/bin/

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

[root@localhost abc]# cd /usr/local/
[root@localhost local]# ls
bin  etc  games  harbor  include  lib  lib64  libexec  sbin  share  src
[root@localhost local]# cd harbor/
[root@localhost harbor]# ls
common                     docker-compose.yml     harbor.v1.2.2.tar.gz  NOTICE
docker-compose.clair.yml   harbor_1_1_0_template  install.sh            prepare
docker-compose.notary.yml  harbor.cfg             LICENSE               upgrade

hostname = 192.168.136.185

#開啓私有倉庫
[root@localhost harbor]# sh /usr/local/harbor/install.sh

[root@localhost harbor]# docker-compose ps

#如果一切正常,可以打開瀏覽器訪問http://192.168.136.185 的管理頁面
默認用戶名密碼是:admin,Harbor12345

我們先創建一個項目,我們的一類鏡像可以放在裏面

Harbor私有倉庫建立+原理
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 127.0.0.1/chen/cirros:v1
[root@localhost harbor]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1/chen/cirros       v1                  bc94bceaae77        12 months ago       10.3MB
cirros                      latest              bc94bceaae77        12 months ago       10.3MB

[root@localhost harbor]# docker push 127.0.0.1/chen/cirros:v1
The push refers to repository [127.0.0.1/chen/cirros]
abbd6d6ac643: Pushed 
75b99987219d: Pushed 
0cc237193a30: Pushed 
v1: digest: sha256:96137d51e0e46006243fa2403723eb47f67818802d1175b5cde7eaa7f19446bd size: 943

我們通過web界面查看一下鏡像有沒有上傳成功

Harbor私有倉庫建立+原理

#遠程客戶端上傳鏡像到私有倉庫
#遠程登錄會報錯
[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.136.185
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.136.185/v2/: dial tcp 192.168.136.185:443: connect: connection refused
#我們要指定私有倉庫實列
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service 
14 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.136.185 --containerd=/run/contai    nerd/containerd.sock

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

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

#遠程下載私有倉庫的鏡像
[root@localhost ~]# docker pull 192.168.136.185/chen/cirros:v1

#遠程上傳鏡像到私有倉庫
[root@localhost ~]# docker push 192.168.136.185/chen/cirros:v2
The push refers to repository [192.168.136.185/chen/cirros]
abbd6d6ac643: Layer already exists 
75b99987219d: Layer already exists 
0cc237193a30: Layer already exists 
v2: digest: sha256:96137d51e0e46006243fa2403723eb47f67818802d1175b5cde7eaa7f

網頁驗證

Harbor私有倉庫建立+原理

#關閉harbor私有倉庫

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

[root@localhost harbor]# ./prepare 

#開啓私有倉庫
[root@localhost harbor]# docker-compose up -d

創建用戶

Harbor私有倉庫建立+原理

#我們用剛纔創建的用戶來登錄私有倉庫
[root@localhost harbor]# docker login http://192.168.136.185
Username: chen
Password: 

在項目中我們加入一個用戶

Harbor私有倉庫建立+原理Harbor私有倉庫建立+原理

如果要移除服務容器同時保留鏡像數據庫/數據庫


docker-compose down -v

如需重新部署,需要移除harbor服務容器全部數據

/var/log/Harbor/目錄下
rm-rf /data/database/ /data/registry/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章