本章將和大家分享Docker倉庫之Harbor企業級映象倉庫的搭建與使用。廢話不多說,下面我們直接進入主題。
一、企業最愛:Harbor企業級映象倉庫
Harbor是VMware公司開源的一個企業級Docker Registry專案,專案地址:https://github.com/goharbor/harbor
Harbor是一個開源的企業級Docker Registry服務,它提供了一個安全、可信賴的倉庫來儲存和管理Docker映象。
雖然Harbor和Registry都是私有映象倉庫的選擇,但是Harbor的企業級特性更強,因此也是更多企業級使用者的選擇。
Harbor實現了基於角色的訪問控制機制,並透過專案來對映象進行組織和訪問許可權的控制,也常常和K8S中的namespace結合使用。此外,Harbor還提供了圖形化的管理介面,我們可以透過瀏覽器來瀏覽,檢索當前Docker映象倉庫,管理專案和名稱空間。
二、一些準備工作
1、安裝docker
如果還沒有安裝docker,那麼請先安裝docker,已安裝則跳過。
[root@localhost ~]# docker -v Docker version 26.1.4, build 5650f9b
之前的博文我們已經講解過Docker的安裝,此處已經安裝過就不再安裝了。
2、安裝docker-compose
此處我採用的是離線安裝方式。
首先下載 docker-compose 到本地,下載地址:https://github.com/docker/compose/
下載連結:https://github.com/docker/compose/releases/download/v2.30.1/docker-compose-linux-x86_64
如果直接點選下載比較慢的話,建議複製連結地址到迅雷下載,這樣可能會快一些。下載完成後,把它上傳到 Linux 伺服器,如下所示:
接著把可執行檔案移到 Linux 系統命令目錄(/usr/local/bin/)下,並重新命名為 “docker-compose” :
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
授權:
chmod +x /usr/local/bin/docker-compose
驗證是否安裝成功:
docker-compose --version
如果能正常顯示出正確的版本號,說明安裝成功了。
如果需要解除安裝,直接刪除即可:
sudo rm /usr/local/bin/docker-compose
三、Harbor安裝與配置
1、下載 Harbor 離線安裝包
透過 GitHub下載離線安裝包,下載地址:https://github.com/goharbor/harbor
下載連結:https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
如果直接點選下載比較慢的話,建議複製連結地址到迅雷下載,這樣可能會快一些。
2、把安裝包上傳到 Linux 伺服器
下載完成後,把離線安裝包上傳到 Linux 伺服器,如下所示:
3、將安裝包解壓出來
tar -zxvf harbor-offline-installer-v2.11.1.tgz
4、修改 harbor.yml 配置檔案
進入解壓後的資料夾,複製 harbor.yml.tmpl 檔案,並重新命名為 harbor.yml ,如下所示:
# 複製並重新命名 cp harbor.yml.tmpl harbor.yml # 修改配置檔案 vim harbor.yml
修改配置檔案,需要設定hostname、埠、admin使用者的初始登入密碼等,標紅色的表示修改的部分:
# The IP address or hostname to access admin UI and registry service. # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients. # 修改主機名,如果沒有域名就使用本機IP地址 hostname: 192.168.4.250 # 配置啟動埠號,預設是80埠,此處我把它改成 5001 # http related config http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 5001 # 如果沒有申請證書,需要把 https 這塊相關的全部給它註釋掉 # https related config # 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 # 啟動成功後,admin使用者的初始登入密碼 harbor_admin_password: admin123456
5、修改 docker 守護程序配置檔案
vim /etc/docker/daemon.json
加上下面這一句,讓 Docker 認為該地址是安全的,這裡的 “your-server-ip” 請替換為你的伺服器外網IP地址,“port” 替換為你的埠:
{ "insecure-registries": [ "your-server-ip:port" ] }
“insecure-registries”:不安全的登錄檔,用來配置 Docker 可以透過 HTTP 而非 HTTPS 連線的不安全映象倉庫地址,即:配置可信任地址。如果配置為0.0.0.0/0,則表示信任所有地址的所有私有倉庫。
示例:
儲存成功後,重新載入配置並重啟Docker服務:
sudo systemctl daemon-reload
sudo systemctl restart docker
6、啟動安裝 Harbor
配置檔案修改成功後,執行 install.sh 指令碼進行安裝 Harbor
./install.sh
提示安裝成功,接下來就可以訪問 Harbor 了。透過 IP+埠 訪問:http://192.168.4.250:5001
訪問成功,由於 Harbor 是透過 Docker 管理的,所以啟動非常方便。如果首頁訪問成功說明 Docker 私有倉庫已經部署成功了。
四、Harbor Web頁面操作說明
預設使用者名稱是admin,密碼是啟動時設定的密碼:admin123456
登入成功進入主頁面,從系統首頁可以看到系統分為三個選單:專案、日誌、系統管理。
1、專案
專案管理顧名思義就是用來管理專案的。可以為每一個開發專案建立一個私有專案庫,然後把 Docker 映象儲存到指定的專案中,為每個專案實現專案映象隔離。建立專案的時候,Harbor提供了公開庫(public repository)和私有庫(private repository)兩種型別的映象儲存空間。
透過詳情資訊可以看到:公開庫中的映象是對所有使用者可見和可訪問的,任何人都可以檢視和拉取其中的映象。而私有庫中的映象則需要登入才能訪問控制,只有被授權的使用者或團隊才能夠檢視、拉取和推送映象。 可以根據需要建立相關的專案。
專案建立成功後,可以點選進入專案。在裡面可以為每個專案單獨設定不同的配置資訊。可以為每一個專案新增成員資訊。
角色許可權說明:
- 專案管理員(Project Administrator):擁有專案的最高許可權,可以對專案進行全面管理,包括建立和刪除專案、管理專案成員和許可權、配置專案屬性、檢視專案日誌等。
- 維護人員(Maintainer):類似於專案管理員,但許可權稍低,通常用於協助管理專案,可以進行專案的部分管理操作,如新增和刪除映象、配置映象的複製和同步規則等。
- 開發者(Developer):具有對專案中映象倉庫的讀寫許可權,可以拉取、推送和刪除映象,以及管理部分專案配置,但不能進行專案管理操作。
- 訪客(Guest):只具有對專案中映象倉庫的只讀許可權,可以檢視映象和後設資料,但無法對映象進行修改或刪除操作。通常用於分享專案或映象給外部團隊或使用者。
- 受限訪客(Restricted Guest):是一種更加受限的訪客角色,通常用於提供給外部使用者或系統,具有對專案中映象倉庫的只讀許可權,但可能會限制訪問的部分內容或功能。
在右上角顯示推送命令,可以透過提示命令進行 docker 映象推送。
2、日誌
日誌選單就是記錄使用者操作日誌資訊的。
3、系統管理
系統管理主要用來管理 Harbor 使用者人員資訊、映象倉庫的各種配置、許可權和系統設定。
五、Docker命令使用私有倉庫
1、登入
登入私有倉庫:
docker login -u admin -p admin123456 http://192.168.4.250:5001
透過輸出可以發現登入成功了。認證資訊儲存在 ~/.docker/config.json 檔案中,只要登入資訊存在,登入會一直生效不需要每次推送拉取之前都登入。
注意:如果未修改 docker 守護程序配置檔案,那麼登入時可能會報以下錯誤。
[root@localhost ~]# docker login -u admin -p admin123456 http://192.168.4.250:5001 WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://192.168.4.250:5001/v2/": http: server gave HTTP response to HTTPS client
這是由於,docker認為這個地址是不安全的,所以需要在docker守護程序配置檔案中把該地址配置為可信任地址。
vim /etc/docker/daemon.json
加上下面這一句,讓 Docker 認為該地址是安全的,這裡的 “your-server-ip” 請替換為你的伺服器外網IP地址,“port” 替換為你的埠:
{ "insecure-registries": [ "your-server-ip:port" ] }
“insecure-registries”:不安全的登錄檔,用來配置 Docker 可以透過 HTTP 而非 HTTPS 連線的不安全映象倉庫地址,即:配置可信任地址。如果配置為0.0.0.0/0,則表示信任所有地址的所有私有倉庫。
示例:
儲存成功後,重新載入配置並重啟Docker服務:
sudo systemctl daemon-reload
sudo systemctl restart docker
配置成功後,再次嘗試登入,這時候應該就可以登入成功了。
2、推送映象
在專案中標記映象:
docker tag SOURCE_IMAGE[:TAG] 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]
示例:
docker tag nginx:latest 192.168.4.250:5001/blog_project/nginx:v1
推送映象到指定專案:
docker push 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]
示例:
docker push 192.168.4.250:5001/blog_project/nginx:v1
檢視 Harbor 倉庫,推送成功。
3、拉取映象
透過另一臺伺服器,使用 docker pull 從私有倉庫拉取映象:
docker pull 192.168.4.250:5001/blog_project/nginx:v1
拉取成功,檢視下載數,發現已經更新了:
4、退出登入
docker logout 192.168.4.250:5001
六、其他補充
首先我們需要先進入解壓後的 harbor 資料夾:
cd ./Software/
cd ./harbor/
接著可以透過 docker-compose ps 命令檢視啟動起來的 docker 例項:
docker-compose ps
可以看到,整個 harbor 容器例項群包括了管理服務、資料庫服務、Job服務、日誌服務以及 portal 網頁入口(預設是80埠)服務等。
如果想要繼續更改 Harbor 配置,那麼改完後需要重新初始化 Harbor:
# docker-compose down -v 命令用於停止並移除使用 docker-compose.yml 檔案定義的所有容器、網路、卷(如果指定了 -v 選項)以及預設的網路橋接。 # 使用這個命令時請謹慎,因為它會永久刪除卷及其資料,除非你有備份或其他方式來恢復這些資料。 # 當你需要清理或重新部署你的 Docker 環境時,這個命令非常有用。 docker-compose down -v # 生成配置檔案,根據 harbor.cfg 配置生成 docker-compose 檔案。 ./prepare # 後臺啟動 Harbor 例項群 # docker-compose up -d 用於根據 docker-compose.yml 檔案中的定義來建立並啟動容器,同時容器會在後臺執行。 # 如果你之前還沒有建立過這些服務(容器),docker-compose up 會先建立它們,然後再啟動。 # 如果你已經執行了這些服務,docker-compose up 會重新建立它們(這會停止並刪除舊的服務,然後建立並啟動新的服務),除非你使用了 --no-recreate 選項來避免重新建立。 docker-compose up -d
想要暫停和重啟 Harbor:
# 暫停 Harbor # docker-compose stop 命令用於停止透過 docker-compose.yml 檔案定義並啟動的所有容器。這個命令不會移除容器、網路或卷,它只是停止了容器的執行。 docker-compose stop # 啟動 Harbor # docker-compose start 命令用於啟動之前已經建立但已停止的容器。 docker-compose start
不用 Harbor 了,那麼可以徹底刪除 Harbor 的資料和映象檔案:
# 徹底地刪除 Harbor 的資料和映象 rm -r /data/database rm -r /data/registry
本文部分內容參考博文:https://www.cnblogs.com/sowler/p/18242819
至此本文就全部介紹完了,如果覺得對您有所啟發請記得點個贊哦!!!
Demo中的軟體安裝包:
連結:https://pan.baidu.com/s/1vJouBntYhV4IwUUQM3iqTg 提取碼:tf92
此文由博主精心撰寫轉載請保留此原文連結:https://www.cnblogs.com/xyh9039/p/18523973
版權宣告:如有雷同純屬巧合,如有侵權請及時聯絡本人修改,謝謝!!!