VMware Harbor 學習


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": {}
}

參考文檔

harbor-文件配置
harbor-https配置

報錯匯總

打開瀏覽器報502錯誤

原因:
代碼內部將路徑寫死成了/data/如果你更換路徑需要修改docker-compose.yml文件

docker-compose down
sed -i 's#/data#/data/db#g' docker-compose.yml 
sh ./install.sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM