Harbor安裝很簡單,不過安裝以后要怎么操作,百度了好久都沒有找到實操的方法,怎么從官方拉取鏡像后更新到私有倉庫中?這個弄了好久,一樣樣測試后才找到方法,對於不熟悉私有倉庫的小白來說,有點坑。還好花了些時間解決了。
1. Harbor簡介
Harbor是構建企業級私有docker鏡像的倉庫的開源解決方案,它是Docker Registry的更高級封裝,它除了提供友好的Web UI界面,角色和用戶權限管理,用戶操作審計等功能外,它還整合了K8s的插件(Add-ons)倉庫,即Helm通過chart方式下載,管理,安裝K8s插件,而chartmuseum可以提供存儲chart數據的倉庫。
另外它還整合了兩個開源的安全組件,一個是Notary,另一個是Clair,Notary類似於私有CA中心,而Clair則是容器安全掃描工具,它通過各大廠商提供的CVE漏洞庫來獲取最新漏洞信息,並掃描用戶上傳的容器是否存在已知的漏洞信息,這兩個安全功能對於企業級私有倉庫來說是非常具有意義的。
2. 安裝docker-compose組件
yum -y install epel-release yum -y install python-pip pip install --upgrade pip pip install docker-compose docker-compose version
3. 安裝Harbor
安裝Docker
先按《安裝Docker》文檔安裝好decker環境
修改docker配置項
vi /usr/lib/systemd/system/docker.service
修改下面內容項(insecure-registry值為當前服務器ip)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --selinux-enabled=false --insecure-registry 192.168.15.216
重啟服務
systemctl daemon-reload
systemctl restart docker
獲取Harbor安裝包下載鏈接
登錄 https://github.com/goharbor/harbor/releases/ 找到想要安裝的版本,獲取offline版本的下載鏈接
執行命令安裝Harbor
# 創建日志存放目錄 mkdir -p /data/logs/harbor cd /usr/local/src/ wget https://github.com/goharbor/harbor/releases/download/v1.10.0/harbor-offline-installer-v1.10.0.tgz tar -zxvf harbor-offline-installer-v1.10.0.tgz cd harbor vi harbor.yml
修改以下內容
# 當前服務器ip,安裝完成后就可以用這個地址訪問web管理頁面 hostname: 192.168.1.xx # 將https的所有項注釋掉,不開啟https訪問 #https: # https port for harbor, default is 443 #port: 443 # The path of cert and key files for nginx #certificate: /your/certificate/path #private_key: /your/private/key/path # harbor ui后台管理員密碼 harbor_admin_password: xxxxx #必須設置,否則安裝后重裝時不能修改,除非刪除數據庫后重新安裝 password: xxxx # harbor日志存放路徑 location: /data/logs/harbor
然后運行腳本進行安裝
./prepare ./install
驗證安裝
在瀏覽器輸入你的服務器地址 http://192.168.1.xx/ 訪問管理頁面
輸入賬號:admin 以及配置參數時的管理員密碼,就可以正常登錄了
docker-compose啟動與停止命令
docker-compose start
docker-compose stop
修改配置操作
如果需要更改harbor的配置項,可按以下步驟進行修改更新
docker-compose down -v vim /usr/local/harbor/harbor.yml ./prepare docker-compose up -d
測試鏡像的拉取與更新
PS:可以在另一台安裝了docker的服務器上做以下測試
配置registry服務是安全可信賴的
vi /etc/docker/daemon.json
將內容修改為下面配置(insecure-registries要改為你的服務器地址)
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "insecure-registries": [ "192.168.1.xx" ], "registry-mirrors": [ "https://registry.docker-cn.com", "https://a8qh6yqv.mirror.aliyuncs.com", "http://hub-mirror.c.163.com" ] }
重啟docker
systemctl restart docker
測試鏡像拉取與更新
# 從官網https://hub.docker.com/search?q=&type=image 拉取鏡像 docker pull redis # 查看已下載的鏡像 docker images # 使用tag將鏡像標志為要推送到私有倉庫的鏡像(默認私有倉庫鏡像目錄為library) docker tag redis 192.168.1.xx/library/redis # 命令中,redis后面不添加版本參數,則表示當前版本號為latest,可以指定為:v1.0.0等版本號,指定后拉取鏡像時,也需要加上版本號 # 登錄harbor,這里需要添加url參數,不然默認登錄的是官網,url需要加上http,不然默認是https docker login http://192.168.1.xx # 輸入用戶名admin,以及密碼,如果是后台新建的賬號,需要在項目=>library(對應的項目名稱)=>成員 中添加對應的賬號 # 將鏡像提交到私有倉庫中 docker push 192.168.1.xx/library/redis # 提交后登錄web管理端,進入項目=>library(對應的項目名稱)=>鏡像倉庫 就可以看到新增的鏡像了 # 測試從私有倉庫中安裝鏡像 # 查看當前服務器鏡像 docker images # REPOSITORY TAG IMAGE ID CREATED SIZE # 192.168.1.xx/library/redis latest c33c9b2541a8 33 hours ago 98.2MB # redis latest c33c9b2541a8 33 hours ago 98.2MB # 刪除當前服務器docker上的鏡像 docker rmi 192.168.1.xx/library/redis:latest docker rmi redis:latest # 查看當前服務器鏡像(redis鏡像已不存在) docker images # 從私有倉庫中安裝鏡像 docker pull 192.168.1.xx/library/redis # 查看當前服務器鏡像 docker images # REPOSITORY TAG IMAGE ID CREATED SIZE # 192.168.1.xx/library/redis latest c33c9b2541a8 33 hours ago 98.2MB
以上操作都是在私有倉庫中的默認庫library操作的,如果需要分項目創建不同的庫,可以登錄web管理端,在項目中創建新的庫
如果需要針對不同的人員操作倉庫進行管理,可以在用戶管理中添加賬號,然后在新建庫的成員中,添加用戶並綁定對應的操作權限
版權聲明:本文原創發表於 博客園,作者為 AllEmpty 本文歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則視為侵權。
作者博客:http://www.cnblogs.com/EmptyFS/