Harbor簡介
Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,通過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。作為一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提升用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源復制,鏡像全部保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。
基於角色的訪問控制
- 用戶與Docker鏡像倉庫通過“項目”進行組織管理,一個用戶可以對多個鏡像倉庫在同一命名空間(project)里有不同的權限。鏡像復制
- 鏡像可以在多個Registry實例中復制(同步)。尤其適合於負載均衡,高可用,混合雲和多雲的場景。圖形化用戶界面
- 用戶可以通過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。AD/LDAP
支持 - Harbor可以集成企業內部已有的AD/LDAP,用於鑒權認證管理。審計管理
- 所有針對鏡像倉庫的操作都可以被記錄追溯,用於審計管理。國際化
- 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。RESTful API
- RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易。部署簡單
- 提供在線和離線兩種安裝工具, 也可以安裝到vSphere平台(OVA方式)虛擬設備。
harbor實戰
基礎安裝
harbor 需要依賴docker,compose工具,需要提前安裝好
yum install docker -y
systemctl start docker
yum install python-pip -y
pip install --upgrade pip
pip install docker-compose
pip install --upgrade docker-compose
docker-compose -v
# docker-compose version 1.11.1, build 7c5d5e4
安裝harbor並啟動
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
tar -zxf harbor-offline-installer-v1.1.2.tgz
mv harbor /data/app/
mkdir /data/db/cert/ -p
# 上傳ca和key證書
ls /data/db/cert/
www.biglittleant.cn.crt www.biglittleant.cn.key
如果不適用https上傳證書,也可以不配置公鑰
cd /data/app/harbor
cp harbor.cfg harbor.cfg.bak
# vim harbor.cfg
hostname = www.biglittleant.cn
ui_url_protocol = https
db_password = root123
max_job_workers = 3
customize_crt = on
ssl_cert = /data/db/cert/www.biglittleant.cn.crt
ssl_cert_key = /data/db/cert/www.biglittleant.cn.key
secretkey_path = /data/db
啟動命令執行
sed -i 's#/data#/data/db#g' docker-compose.yml
sh ./install.sh
配置文件解釋
hostname
:配置主機名稱,不可以設置127.0.0.1,localhost這樣的主機名,ui_url_protocol
:指定使用HTTP協議還是HTTPS協議。Email settings
:設置harbor的郵箱。harbor_admin_password
:設置管理員的初始密碼auth_mode
:用戶認證模式,默認是db_auth,也可以使用ldap驗證。db_password
:使用db需要指定連接數據庫的密碼self_registration
:是否允許自行注冊用戶,默認是on,新版本可以在圖形界面中修改。max_job_workers
:最大工作數,默認是三個
重啟harbor
cd /data/app/harbor
docker-compose stop
docker-compose up -d
harbor日志查看
cd /var/log/harbor
grep "ERROR" *
瀏覽器訪問
初始密碼:admin/Harbor12345
上傳鏡像到harbor
創建相關的項目組和用戶
第一步:創建項目組
第二步:創建項目用戶
第三步:將用戶加入到項目組中。
創建鏡像並上傳到私有鏡像中
第一步:客戶端登錄鏡像倉庫
docker login www.biglittleant.cn
Username: niu
Password:
Login Succeeded
第二步:找到要上傳的鏡像CONTAINER ID
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63ba23b2bf66 nginx:1.11.5 "nginx -g 'daemon off" 18 minutes ago Up 18 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx
第三步:上傳鏡像到私有倉庫
docker commit -m 'my nginx' 63ba23b2bf66 test/nginx:v1
docker tag test/nginx:v1 www.biglittleant.cn/testproject/mynginx:v1
docker push www.biglittleant.cn/testproject/mynginx:v1
The push refers to a repository [www.biglittleant.cn/testproject/mynginx]
648541937c8a: Pushed
3f117c44afbb: Pushed
c4a8b7411af4: Pushed
fe4c16cbf7a4: Pushed
v1: digest: sha256:df87de0675559f8a5a9b01a1d340a95e9b152d9d40c282e5ad48bcdc59d488cd size: 1155
第四步:驗證鏡像是否上傳成功
harbor其他配置
harbor使用http訪問
如果使用http啟動harbor需要在docker中配置--insecure-registry
選項。
舊版本docker:
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry www.biglittlaent.cn'
新版本docker:
vim /etc/docker/daemon.json
{
"insecure-registries" : ["www.biglittlaent.cn"]
}
重啟harbor程序
使用 compose停止harbor
shell> cd /data/app/harbor/
shell> docker-compose down
Stopping nginx ... done
Stopping harbor-jobservice ... done
Stopping harbor-ui ... done
Stopping harbor-db ... done
Stopping registry ... done
Stopping harbor-log ... done
修改harbor.cfg配置文件后
docker-compose down ## 第一步停止harbor
vim harbor.cfg ## 修改鏡像
sudo install.sh ## 重新初始化鏡像
harbor數據路徑: /data/
。
日志路徑:/var/log/harbor
。
擴展閱讀
docker 登錄成功后會在當前用戶的家目錄中創建如下文件
vim ~/.docker/config.json
{
"auths": {
"192.168.56.13": {
"auth": "bml1OkhhcmJvcjEyMzQ1"
}
}
}
登出后如下文件被清除
vim ~/.docker/config.json
{
"auths": {}
}
參考文檔
報錯匯總
打開瀏覽器報502錯誤
原因:
代碼內部將路徑寫死成了/data/
如果你更換路徑需要修改docker-compose.yml
文件
docker-compose down
sed -i 's#/data#/data/db#g' docker-compose.yml
sh ./install.sh