天天看點

harbor私有倉庫部署與管理

理論部分

(1)什麼是Harbor

Harbor 是 VMware 公司開源的企業級 Docker Registry 項目,其目标是幫助使用者迅速搭建一個企業級的 Docker Registry 服務。

Harbor以 Docker 公司開源的 Registry 為基礎,提供了圖形管理 UI 、基于角色的通路控制(Role Based AccessControl) 、AD/LDAP 內建、以及審計日志(Auditlogging) 等企業使用者需求的功能,同時還原生支援中文。

Harbor 的每個元件都是以 Docker 容器的形式建構的,使用 docker-compose 來對它進行部署。用于部署 Harbor 的 docker-compose 模闆位于 harbor/docker-compose.yml。

(2)Harbor的特性

1、基于角色控制:使用者和倉庫都是基于項目進行組織的,而使用者在項目中可以擁有不同的權限。

2、基于鏡像的複制政策:鏡像可以在多個Harbor執行個體之間進行複制(同步)。

3、支援 LDAP/AD:Harbor 可以內建企業内部已有的 AD/LDAP(類似資料庫的一張表),用于對已經存在的使用者認證和管理。

4、鏡像删除和垃圾回收:鏡像可以被删除,也可以回收鏡像占用的空間。

5、圖形化使用者界面:使用者可以通過浏覽器來浏覽,搜尋鏡像倉庫以及對項目進行管理。

6、審計管理:所有針對鏡像倉庫的操作都可以被記錄追溯,用于審計管理。

7、支援 RESTful API:RESTful API 提供給管理者對于 Harbor 更多的操控, 使得與其它管理軟體內建變得更容易。

8、Harbor和docker registry的關系:Harbor實質上是對docker registry做了封裝,擴充了自己的業務模闆。

(3)Harbor 的每個元件都是以 Docker 容器的形式建構的,是以,使用 Docker Compose 來對它進行部署。

總共分為7個容器運作,通過在docker-compose.yml所在目錄中執行 docker-compose ps 指令來檢視, 名稱分别為:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。

其中 harbor-adminserver 主要是作為一個後端的配置資料管理,并沒有太多的其他功能。harbor-ui 所要操作的所有資料都通過 harbor-adminserver 這樣一個資料配置管理中心來完成。

實驗 部署harbor和管理harbor

環境:192.168.206.4 centos7

已經部署docker、docker-compose

使用winscp把harbor-offline-installer-v1.2.2 傳給/opt
cd/opt
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

           
harbor私有倉庫部署與管理
vim /usr/local/harbor/harbor.cfg

5行,設定為Harbor伺服器的IP位址或者域名
hostname = 192.168.206.4
59行,指定管理者的初始密碼,預設的使用者名/密碼是admin/Harbor12345
harbor_admin_password = 123456

#啟動 Harbor
cd /usr/local/harbor/
chmod +x ./prepare
chmod +x ./install.sh
然後在配置好了 harbor.cfg 之後,執行 ./prepare 指令,為 harbor 啟動的容器生成一些必要的檔案(環境)
再執行指令 ./install.sh 以 pull 鏡像并啟動容器

           

配置harbor.cfg檔案

harbor私有倉庫部署與管理
harbor私有倉庫部署與管理
harbor私有倉庫部署與管理
浏覽器登入192.168.206.4
輸入admin管理者,剛才設定密碼123456

           

重點!如何讓其他機子登入harbor

vim /usr/lib/systemd/system/docker.service
13行,中間添加
(--insecure-registry 192.168.206.4   你的harborip伺服器)
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.206.4 --containerd=/run/containerd/containerd.sock

#重新開機 Docker
systemctl daemon-reload
systemctl restart docker
#重新開機harbor
cd /usr/local/harbor/
./install.sh
這樣就完成了

後面使用這兩種登入方式都可以
docker login -u admin -p 123456 http://127.0.0.1 (本機)
docker login -u admin -p 123456 http://192.168.206.4 (本機或者同網段機器)

#測試上傳鏡像(拿已有的nginx:latest)
docker tag nginx:latest 192.168.206.4/my_23/nginx:a1  (鏡像打标簽)
docker push 192.168.206.4/my_23/nginx:a1  (harbor上傳鏡像)
           

管理docker

#指令登入
docker login -u admin -p 123456 http://192.168.206.4

#解除安裝
docker-compose down -v

#編輯配置檔案 
vim harbor.cfg

#啟動配置
./prepare

#啟動Harbor
docker-compose up -d

#harbor報錯解決思路
關閉防火牆、重新開機docker
systemctl stop firewalld
setenfore 0
systemctl restart docker


#移除Harbor服務容器同時保留鏡像資料/資料庫
docker-compose down -v
#如果需要重新部署,需要移除Harbor服務容器全部資料