理論部分
(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/

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檔案
浏覽器登入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服務容器全部資料