1、什麼是Docker私有倉庫
Docker私有倉庫是用於儲存和管理Docker映象的私有儲存庫。Docker預設會有一個公共的倉庫Docker Hub,而與Docker Hub不同,私有倉庫是受限訪問的,只有授權使用者才能夠上傳、下載和管理其中的映象。這種私有倉庫可以部署在本地雲環境中,用於組織內部開發、測試和生產環境中的容器映象管理。保證資料安全性。
2、Docker有哪些私有倉庫
以下是一些常見的Docker私有倉庫:
- Harbor:作為一個企業級的Docker Registry服務,Harbor提供了安全、可信賴的映象儲存和管理功能。它支援RBAC許可權控制、映象複製、映象簽名、漏洞掃描等功能。
- Docker Trusted Registry (DTR):由Docker官方推出的企業級Docker私有倉庫服務,與Docker Engine緊密整合,支援高度的安全性和可靠性。
- Portus:一個開源的Docker映象管理和認證服務,提供使用者管理、團隊管理、映象稽核等功能,與Docker Registry相容。
- Nexus Repository Manager:雖然主要是用於構建和管理Java元件,但也可以用作Docker私有倉庫。它具有強大的儲存管理和許可權控制功能。
- GitLab Container Registry:GitLab整合了容器登錄檔功能,允許您儲存、管理和分發Docker映象。這是GitLab自帶的功能,無需額外部署。
- AWS Elastic Container Registry (ECR):如果使用AWS雲服務,可以考慮使用AWS ECR作為私有倉庫。它與AWS的其他服務整合緊密,對AWS使用者來說是一個方便的選擇。
本篇使用Harbor搭建Docker私有倉庫。
3、Harbor簡介
Harbor是一個開源的企業級Docker Registry服務,它提供了一個安全、可信賴的倉庫來儲存和管理Docker映象。Harbor翻譯為中文名稱為"庇護;居住;"。可以理解為是Docker映象的"居住環境"或者是映象的"庇護所"。Harbor最初由VMware公司開發,旨在解決企業級Docker映象管理的安全和可信任性問題。VMware於2016年釋出,在2017年,VMware將Harbor開源,這使得更廣泛的社群和組織可以自由地使用和貢獻程式碼。Harbor是一個成熟、功能豐富且安全可靠的企業級Docker Registry服務,為企業容器化應用的部署和管理提供了強大的支援。
Harbor官網地址:Harbor (goharbor.io)
Github開源地址:https://github.com/goharbor/harbor
4、Harbor下載
4.1、透過Linux命令下載
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
4.2、GitHub下載
下載地址:https://github.com/goharbor/harbor/releases 下載離線版本
下載成功後,把包透過 xftp
上傳到伺服器。
4.3、解壓
解壓檔案
tar -zxvf harbor-offline-installer-v2.10.0.tgz
5、啟動Harbor
5.1、修改配置檔案
複製harbor.yml.tmpl
檔案並重新命名為harbor.yml
修改此配置檔案,需要設定hostname、埠、資料庫密碼等。
cp harbor.yml.tmpl harbor.yml #複製
vim harbor.yml
修改配置檔案:
#修改hostname的值,如果沒有域名就使用本機IP地址
hostname: 192.168.42.133
#配置啟動埠號
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 5000
# 如果沒有申請證書,需要隱藏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
#啟動成功後,admin使用者登入密碼
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: AdminHarbor12345
5.2、啟動
配置檔案修改成功後,執行 install.sh
指令碼進行安裝harbor
./install.sh
啟動報錯:
[Step 0]: checking if docker is installed ...
Note: docker version: 26.1.3
[Step 1]: checking docker-compose is installed ...
/opt/harbor/common.sh: line 119: docker-compose: command not found
✖ Failed to parse docker-compose version.
可以看到,該伺服器安裝的 docker
沒有安裝 docker-compose
外掛
5.3、安裝docker-compose
進入docker-compose
官網下載執行檔案,地址: https://github.com/docker/compose 下載成功後,把可執行檔案加入Linux
系統命令目錄
cp docker-compose-linux-x86_64 /usr/local/bin/
重新命名:
mv docker-compose-linux-x86_64 docker-compose
授權:
chmod +x /usr/local/bin/docker-compose
執行命令檢視是否安裝成功:
docker-compose --version
如果需要解除安裝,直接刪除即可:
rm -f /usr/bin/docker-compose
5.4、再次啟動
再次執行 ./install.sh
提示安裝成功。接下來就可以訪問Harbor了。訪問IP+埠:http://192.168.42.133:5000
訪問成功,由於Harbor是透過docker管理的,所以啟動非常方便。如果首頁訪問成功說明Docker私有倉庫已經部署成功了。
6、Harbor Web頁面操作說明
預設使用者名稱是admin,密碼是啟動時設定的密碼:AdminHarbor12345
登入成功進入主頁面了。從系統首頁可以看到系統分為三個選單:專案、日誌、系統管理。
6.1、專案
專案管理顧名思義就是用來管理專案的。可以為每一個開發專案建立一個私有專案庫,然後把Docker映象儲存到指定的專案中,為每個專案實現專案映象隔離。建立專案的時候,Harbor提供了公開庫(public repository)和私有庫(private repository)兩種型別的映象儲存空間。
透過詳情資訊可以看到:公開庫中的映象是對所有使用者可見和可訪問的,任何人都可以檢視和拉取其中的映象。而私有庫中的映象則需要登入才能訪問控制,只有被授權的使用者或團隊才能夠檢視、拉取和推送映象。 可以根據需要建立相關的專案。
專案建立成功後,可以點選進入專案。在裡面可以為每個專案單獨設定不同的配置資訊。可以為每一個專案新增成員資訊。
角色許可權說明:
- 專案管理員(Project Administrator):擁有專案的最高許可權,可以對專案進行全面管理,包括建立和刪除專案、管理專案成員和許可權、配置專案屬性、檢視專案日誌等。
- 維護人員(Maintainer):類似於專案管理員,但許可權稍低,通常用於協助管理專案,可以進行專案的部分管理操作,如新增和刪除映象、配置映象的複製和同步規則等。
- 開發者(Developer):具有對專案中映象倉庫的讀寫許可權,可以拉取、推送和刪除映象,以及管理部分專案配置,但不能進行專案管理操作。
- 訪客(Guest):只具有對專案中映象倉庫的只讀許可權,可以檢視映象和後設資料,但無法對映象進行修改或刪除操作。通常用於分享專案或映象給外部團隊或使用者。
- 受限訪客(Restricted Guest):是一種更加受限的訪客角色,通常用於提供給外部使用者或系統,具有對專案中映象倉庫的只讀許可權,但可能會限制訪問的部分內容或功能。
在右上角顯示推送命令,可以透過提示命令進行docker映象推送。
6.2、日誌
日誌選單就是記錄使用者操作日誌資訊的。
6.3、系統管理
系統管理主要用來管理Harbor使用者人員資訊、映象倉庫的各種配置、許可權和系統設定。
7、Docker命令使用私有倉庫
7.1、登入
首先登入私有倉庫地址:
docker login -u admin -p AdminHarbor12345 http://192.168.42.133:5000
會報錯:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.42.133:5000/v2/": proxyconnect tcp: dial tcp 192.168.65.7:3128: connect: connection refused
docker認為這個地址是不安全的,所以需要在docker守護程序配置檔案中把該地址加入安全範圍。
{
"registry-mirrors": ["https://ejes884z.mirror.aliyuncs.com"],
"log-driver":"json-file",
"log-opts": {"max-size":"1g", "max-file":"3"},
"live-restore": true,
"insecure-registries": ["192.168.42.133:5000"]
}
# insecure-registries 不安全的登錄檔配置一些不安全的地址資訊,讓Docker認為是安全的。多個地址使用 "," 分割
加入配置成功後,再次登入。
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
透過輸出發現登入成功。認證資訊儲存在 ~/.docker/config.json
檔案中,只要登入資訊存在,登入會一直生效不需要每次推送拉取之前都登入。
7.2、推送
重新命名映象名稱
docker tag 94543a6c1aef 192.168.42.133:5000/blog_project/nginx:1.26.0
推送
docker push 192.168.42.133:5000/blog_project/nginx:1.26.0
檢視Harbor倉庫,推送成功。
7.3、拉取
透過另一臺伺服器,使用 docker pull
拉取映象從私有倉庫拉取映象:
docker pull 192.168.42.133:5000/blog_project/nginx:1.26.0
拉取成功
檢視下載數,發現已經更新了。
8、總結
關於使用Harbor搭建Docker私有倉庫就介紹完畢了,如果大家有興趣可以檢視一下其他搭建方式,然後在它們之間進行對比一下看看那種方式更適合。本篇為入門級Harbor的基礎使用,其他功能可以自行研究。