harbor為構建docker私有鏡像倉庫的開源方案,提供了Web UI管理界面,可進行用戶權限管理、用戶操作審計等功能。
harbor部署成功后的管理界面如下所示:

可以看到harbor提供的功能相當齊全。下面就把harbor部署過程做一記錄。
本次部署是基於以下環境構建:
使用機器為Vmware Workstations創建虛擬機
系統版本:centOS7.7
docker版本:19.03.10
下面進入hardor部署:
一、安裝docker-compose:
服務器有網絡安裝方式:
docker-compose是docker用來管理容器的一個工具,harbor的運行基於docker-compose。
安裝docker-compose:
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
如果github安裝太慢,可使用下面的高速地址安裝:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
服務器無網絡時安裝方式:
先下載好(下載地址:https://github.com/docker/compose/releases/)后,上傳至服務器centos的/usr/local/bin目錄下
不管使用哪種方式下載,上傳到指定目錄后都需要對文件進行賦權:chmod +x /usr/local/bin/docker-compose
二、安裝harbor
1.下載並解壓
下載安裝包:官網地址:https://github.com/vmware/harbor/releases/
下載速度慢可用這個地址:http://harbor.orientsoft.cn/
上傳后解壓:
tar -xzvf harbor-offline-installer-v2.0.0.tgz
2.使用OpenSSL配置harbor所需認證。
harbor推送拉去鏡像默認是使用https。所以需要配置https認證。https認證一般有兩種方式,一種是自簽,另一種是向官方申請https證書。
OpenSSL提供的CA(證書管理中心)可實現證書簽發的整個流程。下面將記錄設置https自簽步驟。
(1)生成密鑰和自簽證書。
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
其中x509代表生成自簽名證書,newkey表示自動生成秘鑰。執行命令后如下:

其中的其他信息隨意,Common Name信息填寫的就是harbor管理頁面的域名。
(2)證書簽名請求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.dockerregistry.com.key -out harbor.dockerregistry.com.csr
(3)生成服務器證書
openssl x509 -req -days 365 -in harbor.dockerregistry.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.dockerregistry.com.crt
執行完后在本目錄分別生成以ca和harbor.dockerregistry.com為名的.crt .key 和.srl文件。
將服務器證書即harbor.dockerregistry.com.crt和harbor.dockerregistry.com.key拷貝保存在/etc/harborcert目錄下:
cp harbor.dockerregistry.com.crt harbor.dockerregistry.com.key /etc/harborcert/
3.修改harbor配置文件
從模板harbor.yml.tmpl拷貝一份文件命名harbor.yml,修改配置harbor.yml文件如下:

4.運行install.sh文件安裝harbor
5.安裝完成后,hosts文件中追加一下行,將ip和域名對應:
192.168.230.132 harbor.dockerregistry.com
6.瀏覽器輸入harbor域名,進入登錄頁面:https://harbor.dockerregistry.com/
默認用戶名:admin 密碼:Harbor12345

harbor基本部署完成。下面我們使用docker登錄harbor,並推送鏡像至harbor中。
7.客戶端證書保存。在/etc/docker/certs.d/新建以harbor域名為命的文件夾。如下:
mkdir -p /etc/docker/certs.d/harbor.dockerregistry.com
拷貝客戶端證書至該目錄下:
cp ca.crt /etc/docker/certs.d/harbor.dockerregistry.com
在/etc/docker目錄下編輯daemon.json文件,沒有的話新建該文件:
vi /etc/docker/daemon.json
內容如下:
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" },"insecure-registries":[ "harbor.dockerregistry.com" ] }
其中"insecure-registries"字段對應的值就是harbor的域名。
8.使用docker登錄harbor。docker login harbor.dockerregistry.com。輸入用戶名和密碼。如下圖:

9.推送鏡像到harbor上。
harbor搭建完成后會有一個默認的項目library。我們將鏡像推送至該項目即可。
首先使用tag標記鏡像,如下:
docker tag registry:latest harbor.dockerregistry.com/library/registry:latest
推送鏡像到harbor:
docker push harbor.dockerregistry.com/library/registry:latest
上傳成功。具體如下圖所示:

10.檢查推送鏡像。
在harbor網頁管理頁面中查看項目library的鏡像倉庫可以看到剛剛推送的鏡像。如下圖:

harbor第一次啟動是安裝完成后自啟動的,后面若因為一些原因導致服務停止,可使用docker-compose啟動harbor,命令如下:
docker-compose up -d
至此harbor私有鏡像倉庫搭建完成。
