目錄
registry鏡像倉庫概述
Docker 鏡像倉庫(Docker Registry):
registry 容器:
私有倉庫概述
搭建本地私有倉庫示例
Harbor概述
harbor架構(gòu)
詳解構(gòu)成
Harbor由容器構(gòu)成
Harbor部署示例
環(huán)境準(zhǔn)備
部署Docker-Compose服務(wù)
部署 Harbor 服務(wù)
啟動Harbor
查看 Harbor 啟動鏡像
創(chuàng)建一個新項(xiàng)目
在其他客戶端上傳鏡像
維護(hù)管理Harbor
通過Harbor Web創(chuàng)建項(xiàng)目
創(chuàng)建 Harbor 用戶
查看日志
修改 Harbor.cfg 配置文件
移除 Harbor 服務(wù)容器同時保留鏡像數(shù)據(jù)/數(shù)據(jù)庫,并進(jìn)行遷移
registry鏡像倉庫概述
Docker 鏡像倉庫(Docker Registry)是一個用于存儲和管理 Docker 鏡像的中央倉庫。registry 容器就是運(yùn)行 Docker 鏡像倉庫服務(wù)的容器。
Docker 鏡像倉庫(Docker Registry):
定義: Docker 鏡像倉庫是一個集中存儲和管理 Docker 鏡像的服務(wù)。它允許用戶上傳、下載和分享 Docker 鏡像。最常見的 Docker Registry 是 Docker 官方提供的公共注冊表(Docker Hub),但用戶也可以搭建私有 Docker 鏡像倉庫,以在本地或私有網(wǎng)絡(luò)中管理鏡像。
功能:
-
存儲鏡像: 提供一個集中的地方存儲 Docker 鏡像。
-
版本控制: 允許同一鏡像的不同版本存在。
-
訪問控制: 可以配置訪問權(quán)限,使鏡像倉庫可以是公開的或私有的。
-
鏡像標(biāo)簽: 鏡像可以用標(biāo)簽來區(qū)分不同版本或變體。
-
安全審計: 提供審計功能,追蹤誰上傳或下載了哪些鏡像。
常見的 Docker 鏡像倉庫:
-
Docker Hub: 官方的公共 Docker 鏡像倉庫。
-
Quay: 一個高性能、可擴(kuò)展的 Docker 鏡像 registry 服務(wù),提供強(qiáng)大的鏡像管理和訪問控制。
-
Harbor: 一個開源的企業(yè)級 Docker Registry,支持安全、可靠的鏡像管理。
registry 容器:
定義: registry 容器是運(yùn)行 Docker 鏡像倉庫服務(wù)的 Docker 容器。它使用 registry 鏡像,通過在容器內(nèi)提供 registry 服務(wù),允許用戶在本地或私有網(wǎng)絡(luò)中搭建自己的 Docker 鏡像倉庫。
運(yùn)行 registry 容器的步驟:
- 拉取 registry 鏡像:
docker pull registry
- 運(yùn)行 registry 容器:
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
-
-itd
: 在容器中打開一個偽終端進(jìn)行交互操作,并在后臺運(yùn)行。 -
-v
: 將宿主機(jī)的/data/registry
目錄掛載到容器的/var/lib/registry
目錄,實(shí)現(xiàn)數(shù)據(jù)的持久化。 -
-p
: 映射端口,使得可以通過宿主機(jī)的 5000 端口訪問 registry 容器的服務(wù)。 -
--restart=always
: 容器退出時總是重啟容器,確保服務(wù)的持續(xù)性。 -
--name registry
: 為容器命名為 registry。 -
registry:latest
: 使用最新版本的 registry 鏡像。
功能:
-
提供鏡像服務(wù): 允許上傳、下載和管理 Docker 鏡像。
-
數(shù)據(jù)持久化: 使用
-v
參數(shù)將宿主機(jī)目錄掛載到容器,確保數(shù)據(jù)的持久化。 -
端口映射: 使用
-p
參數(shù)映射宿主機(jī)端口,方便外部訪問 registry 服務(wù)。 -
自動重啟: 使用
--restart=always
參數(shù),保證容器在退出時自動重啟。
通過搭建 registry 容器,用戶可以在本地或私有網(wǎng)絡(luò)中建立自己的 Docker 鏡像倉庫,方便鏡像的管理和共享。
私有倉庫概述
????????Docker私有倉庫是指企業(yè)內(nèi)部使用的倉庫,用于存放自身開發(fā)的企業(yè)級應(yīng)用的鏡像。私有倉庫的主要優(yōu)點(diǎn)包括節(jié)省網(wǎng)絡(luò)帶寬和提供鏡像資源的有效利用。通過搭建本地私有倉庫,企業(yè)可以在內(nèi)部網(wǎng)絡(luò)中快速下載和上傳鏡像,不受外網(wǎng)帶寬等因素的影響。此外,私有倉庫還可以配置倉庫認(rèn)證功能,以確保只有授權(quán)的人員可以訪問和使用其中的鏡像。
搭建本地私有倉庫示例
下載 registry 鏡像:
docker pull registry
配置 daemon.json 文件: 在 /etc/docker/daemon.json
文件中添加私有鏡像倉庫地址,同時配置其他參數(shù)
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.41.31:5000"],
"registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}
重啟 Docker 服務(wù):
systemctl restart docker.service
Docker 容器的重啟策略的解析:
-
no:
-
默認(rèn)策略。
-
當(dāng)容器退出時,不會自動重啟容器。
-
-
on-failure:
-
在容器非正常退出時(退出狀態(tài)非0),才會觸發(fā)容器的自動重啟。
-
-
on-failure:3:
-
在容器非正常退出時自動重啟容器,最多重啟3次。
-
限制了容器的最大重啟次數(shù)。
-
-
always:
-
在容器退出時總是自動重啟容器,不考慮退出的原因。
-
-
unless-stopped:
-
在容器退出時總是自動重啟容器。
-
不考慮在 Docker 守護(hù)進(jìn)程啟動時就已經(jīng)停止了的容器,即使在 Docker 守護(hù)進(jìn)程啟動時手動停止容器,也會被重啟。
-
????????這些重啟策略提供了對容器生命周期的不同控制選項(xiàng),以滿足不同場景下的需求。選擇適當(dāng)?shù)闹貑⒉呗钥梢源_保容器服務(wù)的可用性和穩(wěn)定性。
運(yùn)行 registry 容器:
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
解釋:
-
-itd
: 在容器中打開一個偽終端進(jìn)行交互操作,并在后臺運(yùn)行。 -
-v
: 將宿主機(jī)的/data/registry
目錄綁定到容器的/var/lib/registry
目錄,實(shí)現(xiàn)數(shù)據(jù)的持久化。/var/lib/registry目錄是registry容器中存放鏡像文件的目錄 -
-p
: 映射端口,訪問宿主機(jī)的 5000 端口即可訪問 registry 容器的服務(wù)。 -
--restart=always
: 容器退出時總是重啟容器。 -
--name registry
: 創(chuàng)建容器并命名為 registry。 -
registry:latest
: 使用最新版本的 registry 鏡像。
為鏡像打標(biāo)簽:
docker tag centos:7 192.168.41.31:5000/centos:v1
上傳到私有倉庫:
docker push 192.168.41.31:5000/centos:v1
列出私有倉庫的所有鏡像:
curl http://192.168.41.31:5000/v2/_catalog
查看私有倉庫的 centos 鏡像有哪些 tag:
curl http://192.168.41.31:5000/v2/centos/tags/list
刪除原有的 centos 鏡像,然后從私有倉庫下載:
docker rmi -f 8652b9f0cb4c
docker pull 192.168.41.31:5000/centos:v1
Harbor概述
????????Harbor是一個由VMware公司開源的企業(yè)級Docker Registry項(xiàng)目。它的目標(biāo)是幫助用戶快速搭建一個企業(yè)級的Docker Registry服務(wù)。
????????Harbor基于Docker公司開源的Registry,并提供了一些企業(yè)用戶需求的功能,如圖形管理界面、基于角色的訪問控制(Role Based Access Control)、AD/LDAP集成以及審計日志等。此外,Harbor還原生地支持中文。
????????Harbor的每個組件都以Docker容器的形式構(gòu)建,并使用docker-compose來進(jìn)行部署。用于部署Harbor的docker-compose模板可以在harbor/docker-compose.yml中找到。
harbor架構(gòu)
Harbor的整體架構(gòu)由以下幾個組件組成:
-
代理層(Proxy Layer):代理層實(shí)質(zhì)上是一個Nginx反向代理,負(fù)責(zé)接收不同類型的客戶端請求,包括瀏覽器、用戶腳本、Docker等,并根據(jù)請求類型和URI轉(zhuǎn)發(fā)給不同的后端服務(wù)進(jìn)行處理。
-
功能層(Functional Layer):
-
Portal:基于Angular的前端應(yīng)用,提供Harbor用戶訪問的界面。
-
Core:Harbor的核心組件,封裝了大部分的業(yè)務(wù)邏輯。
-
JobService:異步任務(wù)組件,負(fù)責(zé)處理Harbor中一些耗時的功能,如Artifact復(fù)制、掃描、垃圾回收等。
-
-
數(shù)據(jù)層(Data Layer):
-
Redis:主要作為緩存服務(wù),存儲一些生命周期較短的數(shù)據(jù),并為JobService提供類似隊(duì)列的功能。
-
PostgreSQL:存儲Harbor的應(yīng)用數(shù)據(jù),包括項(xiàng)目信息、用戶與項(xiàng)目的關(guān)系、管理策略、配置信息、Artifact的元數(shù)據(jù)等。
-
詳解構(gòu)成
Harbor 在架構(gòu)上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六個組件。
-
Proxy(代理):使用Nginx作為前端代理,Harbor 的 Registry、UI、Token 服務(wù)等組件,都處在 nginx 反向代理后邊。會將來自瀏覽器和Docker客戶端的請求轉(zhuǎn)發(fā)給后端的不同服務(wù)。
-
Registry(注冊表):負(fù)責(zé)存儲Docker鏡像,并處理Docker push/pull命令。由于要對用戶進(jìn)行訪問控制,即不同用戶對 Docker 鏡像 有不同的讀寫權(quán)限,Registry 會指向一個 Token 服務(wù),強(qiáng)制用戶的每次 Docker pull/push 請求都要攜帶一個合法的 Token, Registry 會通過公鑰對 Token 進(jìn)行解密驗(yàn)證。
認(rèn)證方式
-
基于令牌(Token-based)認(rèn)證:這是Registry的默認(rèn)認(rèn)證方式。用戶在進(jìn)行Docker push/pull等操作時,需要提供有效的訪問令牌(Token)。Registry會驗(yàn)證令牌的有效性和權(quán)限,并根據(jù)用戶的權(quán)限控制對鏡像的訪問。
-
基于用戶名和密碼(Username and Password)認(rèn)證:用戶可以使用用戶名和密碼進(jìn)行認(rèn)證,以獲取訪問Registry的權(quán)限。這種方式需要在Registry中配置用戶賬戶和密碼,并在進(jìn)行操作時提供正確的用戶名和密碼。
-
基于TLS/SSL證書(TLS/SSL Certificate)認(rèn)證:Registry可以配置使用TLS/SSL證書進(jìn)行認(rèn)證和加密通信。客戶端需要提供有效的證書來與Registry建立安全連接,并進(jìn)行認(rèn)證和授權(quán)。
-
基于OAuth認(rèn)證:Registry可以與OAuth身份驗(yàn)證提供者集成,以實(shí)現(xiàn)更強(qiáng)大的身份驗(yàn)證和授權(quán)機(jī)制。用戶可以使用OAuth提供者頒發(fā)的令牌來訪問Registry,并根據(jù)OAuth提供者的權(quán)限進(jìn)行控制。
-
-
Core services(核心服務(wù)):
-
UI(harbor-ui):提供圖形化界面,幫助用戶管理Registry上的鏡像,并進(jìn)行授權(quán)管理。
-
WebHook:用于及時獲取Registry上鏡像狀態(tài)的變化,并將其傳遞給UI模塊。
-
Token服務(wù):根據(jù)用戶權(quán)限為每個Docker push/pull命令簽發(fā)Token。如果請求不包含Token,將被重定向到Token服務(wù)獲取Token后再向Registry發(fā)起請求。
-
-
Database(harbor-db):為Core services提供數(shù)據(jù)庫服務(wù),存儲用戶權(quán)限、審計日志、Docker鏡像分組等數(shù)據(jù)。
-
Job services(作業(yè)服務(wù)):用于鏡像復(fù)制,可以將本地鏡像同步到遠(yuǎn)程Harbor實(shí)例。
-
Log collector(日志收集器):負(fù)責(zé)收集其他組件的日志到一個統(tǒng)一的地方。
-
此外,還有一個名為harbor-adminserver的組件,作為后端的配置數(shù)據(jù)管理中心,負(fù)責(zé)管理Harbor的配置數(shù)據(jù),而不具備其他功能。
Harbor由容器構(gòu)成
Harbor的每個組件都以Docker容器的形式構(gòu)建,并可以使用Docker Compose進(jìn)行部署。在Harbor的docker-compose.yml文件所在的目錄中執(zhí)行docker-compose ps命令可以查看正在運(yùn)行的容器。
總共有7個容器在運(yùn)行,它們的名稱分別是:
-
nginx:作為前端代理,接收來自瀏覽器和Docker客戶端的請求,并將其轉(zhuǎn)發(fā)給后端的不同服務(wù)。
-
harbor-jobservice:用于處理Harbor中的作業(yè)任務(wù),例如鏡像復(fù)制等。
-
harbor-ui:提供圖形化界面,允許用戶管理Registry上的鏡像,并進(jìn)行授權(quán)管理。
-
harbor-db:為Harbor的核心服務(wù)提供數(shù)據(jù)庫服務(wù),存儲用戶權(quán)限、審計日志、Docker鏡像分組等數(shù)據(jù)。
-
harbor-adminserver:作為后端的配置數(shù)據(jù)管理中心,負(fù)責(zé)管理Harbor的配置數(shù)據(jù),但沒有太多其他功能。
-
registry:Harbor的核心組件,負(fù)責(zé)存儲和管理Docker鏡像。
-
harbor-log:用于收集其他組件的日志,并將其集中存儲在一個地方。
需要注意的是,harbor-adminserver充當(dāng)了數(shù)據(jù)配置管理中心,harbor-ui通過它來操作和管理所有的數(shù)據(jù)。這種架構(gòu)使得數(shù)據(jù)的管理更加集中和統(tǒng)一。
通過使用Docker Compose進(jìn)行部署,可以方便地管理和啟動這些容器,確保Harbor的各個組件正常運(yùn)行。
Harbor部署示例
環(huán)境準(zhǔn)備
-
Harbor服務(wù)器是一個用于管理和存儲Docker鏡像的私有倉庫。它安裝了docker-ce(Docker的社區(qū)版)、docker-compose(用于管理多個Docker容器的工具)和harbor-offline-v1.2.2(Harbor的離線版本1.2.2)。
-
客戶端服務(wù)器是一個使用Docker的服務(wù)器,它安裝了docker-ce。它可以通過網(wǎng)絡(luò)連接到Harbor服務(wù)器,并使用Harbor提供的功能來管理和獲取Docker鏡像。
-
這個架構(gòu)允許在Harbor服務(wù)器上集中管理和存儲Docker鏡像,并通過客戶端服務(wù)器來訪問和使用這些鏡像。
部署Docker-Compose服務(wù)
下載或上傳Docker-Compose:
????????使用curl命令下載Docker-Compose二進(jìn)制文件。該命令會從GitHub上的docker/compose倉庫下載特定版本的Docker-Compose。請注意,uname -s
和uname -m
是用于獲取操作系統(tǒng)和機(jī)器架構(gòu)的命令。
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
賦予執(zhí)行權(quán)限:
????????使用chmod命令為下載的Docker-Compose二進(jìn)制文件賦予執(zhí)行權(quán)限。
chmod +x /usr/local/bin/docker-compose
驗(yàn)證安裝:
????????使用docker-compose命令驗(yàn)證Docker-Compose的安裝是否成功。
docker-compose --version
以上步驟將下載或上傳Docker-Compose二進(jìn)制文件,并將其安裝到/usr/local/bin/docker-compose路徑下。然后,通過運(yùn)行docker-compose --version命令,可以驗(yàn)證安裝是否成功。
部署 Harbor 服務(wù)
下載或上傳Harbor安裝程序:
????????使用wget命令下載Harbor離線安裝程序。該命令會從指定的URL下載Harbor離線安裝程序的壓縮包。
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
解壓安裝程序:
????????使用tar命令解壓下載的Harbor離線安裝程序壓縮包,并將其解壓到/usr/local/目錄下。
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
修改Harbor安裝的配置文件:
- 使用vim或其他文本編輯器打開Harbor的配置文件harbor.cfg。根據(jù)需要修改以下兩個配置項(xiàng):
vim /usr/local/harbor/harbor.cfg
- 第5行:將"hostname"設(shè)置為Harbor服務(wù)器的IP地址或域名。
hostname = 192.168.41.31
- 第59行:將"harboradminpassword"設(shè)置為管理員的初始密碼。默認(rèn)的用戶名/密碼是admin/Harbor12345。
harbor_admin_password = Harbor12345
保存并關(guān)閉文件。
????????以上步驟將下載或上傳Harbor安裝程序,并將其解壓到/usr/local/目錄下。然后,可以通過修改配置文件來設(shè)置Harbor服務(wù)器的IP地址或域名以及管理員的初始密碼。
啟動Harbor
????????在配置好了harbor.cfg文件之后,可以按照以下步驟啟動Harbor:
切換到Harbor安裝目錄: 使用cd命令切換到Harbor的安裝目錄。
cd /usr/local/harbor/
執(zhí)行prepare命令: 運(yùn)行./prepare命令,為Harbor啟動的容器生成必要的文件和環(huán)境。
./prepare
執(zhí)行install.sh命令: 運(yùn)行./install.sh命令,它將拉取Harbor鏡像并啟動容器。
./install.sh
????????以上步驟將在配置好harbor.cfg文件后,為Harbor生成必要的文件和環(huán)境,并拉取Harbor鏡像并啟動容器。這樣,就可以開始使用Harbor服務(wù)了。
查看 Harbor 啟動鏡像
????????要查看Harbor啟動的鏡像,可以按照以下步驟進(jìn)行:
切換到Harbor安裝目錄: 使用cd命令切換到Harbor的安裝目錄。
cd /usr/local/harbor/
執(zhí)行docker-compose ps命令: 運(yùn)行docker-compose ps命令,它將顯示Harbor啟動的容器及其相關(guān)信息,包括容器的名稱、狀態(tài)和所使用的鏡像。
docker-compose ps
????????以上步驟將在Harbor安裝目錄下執(zhí)行docker-compose ps命令,以查看Harbor啟動的容器及其相關(guān)信息,包括所使用的鏡像。
創(chuàng)建一個新項(xiàng)目
創(chuàng)建一個新項(xiàng)目并上傳鏡像到Harbor
-
在瀏覽器中訪問Harbor的WEB UI界面: 使用http://192.168.41.31訪問Harbor的WEB UI界面。默認(rèn)的管理員用戶名和密碼是admin/Harbor12345。
-
登錄并創(chuàng)建新項(xiàng)目: 在登錄界面輸入管理員用戶名和密碼后,點(diǎn)擊登錄按鈕。然后點(diǎn)擊"+項(xiàng)目"按鈕創(chuàng)建一個新項(xiàng)目。
-
填寫項(xiàng)目信息: 在創(chuàng)建新項(xiàng)目的界面中,填寫項(xiàng)目名稱為"myproject-kgc",然后點(diǎn)擊"確定"按鈕創(chuàng)建新項(xiàng)目。
-
使用Docker命令登錄并推送鏡像: 使用以下Docker命令在本地登錄Harbor并推送鏡像。默認(rèn)情況下,Registry服務(wù)器在端口80上監(jiān)聽。
-
登錄Harbor:
docker login [-u admin -p Harbor12345] http://127.0.0.1
- 下載鏡像進(jìn)行測試:
docker pull nginx
- 打標(biāo)簽:
docker tag nginx:latest 127.0.0.1/myproject-kgc/nginx:v1
- 上傳鏡像到Harbor:
docker push 127.0.0.1/myproject-kgc/nginx:v1
- 在Harbor界面查看鏡像: 在Harbor的WEB UI界面中,導(dǎo)航到"myproject-kgc"目錄下,將看到上傳的鏡像及其相關(guān)信息。
按照以上步驟,將能夠在Harbor中創(chuàng)建一個新項(xiàng)目,并通過Docker命令登錄和推送鏡像到該項(xiàng)目中。然后,您可以在Harbor的WEB界面中查看該項(xiàng)目下的鏡像及其相關(guān)信息。
在其他客戶端上傳鏡像
????????以上操作都是在 Harbor 服務(wù)器本地操作。如果其他客戶端登錄到 Harbor,就會報如下錯誤。出現(xiàn)這問題的原因?yàn)镈ocker Registry 交互默認(rèn)使用的是 HTTPS,但是搭建私有鏡像默認(rèn)使用的是 HTTP 服務(wù),所以與私有鏡像交互時出現(xiàn)以下錯誤。
docker login -u admin -p Harbor12345 http://192.168.41.31
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.41.31/v2/: dial tcp 192.168.41.31:443: connect: connection refused
????????要在其他客戶端上傳鏡像到Harbor,解決辦法是:在 Docker server 啟動的時候,增加啟動參數(shù),默認(rèn)使用 HTTP 訪問。
在Docker客戶端配置操作: 使用vim或其他文本編輯器打開Docker服務(wù)的配置文件docker.service。
vim /usr/lib/systemd/system/docker.service
- 在第13行修改ExecStart參數(shù),添加--insecure-registry選項(xiàng)并指定Harbor服務(wù)器的IP地址。
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.41.31 --containerd=/run/containerd/containerd.sock
或
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.41.31
保存并關(guān)閉文件。
重啟Docker服務(wù): 使用systemctl命令重新加載配置文件并重啟Docker服務(wù)。
systemctl daemon-reload
systemctl restart docker
再次登錄Harbor: 使用docker login命令登錄Harbor??梢允褂糜脩裘兔艽a進(jìn)行登錄,但請注意使用--password-stdin選項(xiàng)更安全。
docker login -u admin -p Harbor12345 http://192.168.41.31
????????登錄成功后,憑據(jù)將被保存在/root/.docker/config.json文件中,以便下次登錄時可以直接使用憑據(jù)登錄Harbor。
下載和上傳鏡像: 使用docker pull命令下載鏡像,并使用docker tag和docker push命令將鏡像打標(biāo)簽并上傳到Harbor。
docker pull 192.168.41.31/myproject-kgc/nginx:v1
docker pull cirros
docker tag cirros:latest 192.168.41.31/myproject-kgc/cirros:v2
docker push 192.168.41.31/myproject-kgc/cirros:v2
刷新Harbor的Web管理界面: 在Harbor的WEB UI界面中,導(dǎo)航到"myproject-kgc"項(xiàng)目下,將看到上傳的鏡像及其相關(guān)信息。
????????按照以上步驟,將能夠在其他客戶端配置Docker以上傳鏡像到Harbor。首先,在Docker客戶端的配置文件中添加--insecure-registry選項(xiàng),并重啟Docker服務(wù)。然后,使用docker login命令登錄Harbor,并使用docker pull、docker tag和docker push命令下載、打標(biāo)簽和上傳鏡像。最后,在Harbor的WEB界面中刷新,將看到上傳的鏡像及其相關(guān)信息。
維護(hù)管理Harbor
通過Harbor Web創(chuàng)建項(xiàng)目
要通過Harbor Web創(chuàng)建項(xiàng)目,可以按照以下步驟進(jìn)行操作:
-
打開Harbor Web界面并登錄。
-
導(dǎo)航到倉庫頁面,通常位于導(dǎo)航欄的頂部或側(cè)邊欄中。
-
在倉庫頁面上,將看到一個項(xiàng)目列表。單擊列表上方的"+項(xiàng)目"按鈕。
-
在彈出的對話框中,填寫項(xiàng)目的名稱。
-
如果你希望項(xiàng)目是私有的(只有特定用戶或團(tuán)隊(duì)可以訪問),請確保項(xiàng)目級別設(shè)置為"私有",并取消勾選相關(guān)選項(xiàng)。
-
如果你希望項(xiàng)目是公共的(任何人都可以訪問),請將項(xiàng)目級別設(shè)置為"公共倉庫",并保持相關(guān)選項(xiàng)處于選中狀態(tài)。
-
單擊"創(chuàng)建"按鈕以創(chuàng)建項(xiàng)目。
-
現(xiàn)在,就可以將鏡像推送到該項(xiàng)目中。在推送之前,請確保已經(jīng)在本地配置了正確的Docker客戶端,并且已經(jīng)登錄到Harbor倉庫(如果項(xiàng)目是私有的)。
-
推送鏡像后,其他用戶將能夠通過Harbor Web界面或命令行下載該項(xiàng)目下的鏡像。
請注意,Harbor的鏡像操作與Docker Hub類似,但具體細(xì)節(jié)可能會有所不同。根據(jù)具體情況和需求,可能需要進(jìn)一步了解Harbor的文檔或參考指南。
創(chuàng)建 Harbor 用戶
創(chuàng)建Harbor用戶并分配權(quán)限
-
在Harbor的Web管理界面中,單擊"系統(tǒng)管理",然后選擇"用戶管理"。
-
在用戶管理頁面上,單擊"+用戶"按鈕。
-
填寫用戶名為"test-zhangsan",郵箱為"test-zhangsan@qq.com",全名為"zhangsan",密碼為"Abc123456",并在注釋中添加"管理員"(可選)。
-
單擊"創(chuàng)建"按鈕以創(chuàng)建用戶。如果需要將該用戶設(shè)置為管理員角色或進(jìn)行其他操作,可以單擊左側(cè)的"…"按鈕進(jìn)行相應(yīng)設(shè)置。
添加項(xiàng)目成員
-
導(dǎo)航到項(xiàng)目頁面,找到你的項(xiàng)目(例如"myproject-test")并單擊進(jìn)入。
-
在項(xiàng)目頁面上,找到"成員"選項(xiàng)卡并單擊。
-
單擊"+成員"按鈕。
-
填寫之前創(chuàng)建的用戶"test-zhangsan",并將角色設(shè)置為"開發(fā)人員"。
-
單擊"創(chuàng)建"按鈕以添加項(xiàng)目成員。如果需要更改成員角色或進(jìn)行其他操作,可以單擊左側(cè)的"…"按鈕進(jìn)行相應(yīng)設(shè)置。
在客戶端上使用普通賬戶操作鏡像
- 首先,刪除本地已經(jīng)打標(biāo)簽的鏡像
docker rmi 192.168.41.31/myproject-test/cirros:v2
- 退出當(dāng)前用戶,并使用之前創(chuàng)建的賬戶"test-zhangsan"進(jìn)行登錄:
docker logout 192.168.41.31
docker login 192.168.41.31
或者
docker login -u test-zhangsan -p Abc123456 http://192.168.41.31
- 下載和上傳鏡像進(jìn)行測試(示例中的命令是下載名為"192.168.41.31/myproject-test/cirros:v2"的鏡像,然后將其重新打標(biāo)簽為"192.168.41.31/myproject-test/cirros:v3"并上傳):
docker pull 192.168.41.31/myproject-test/cirros:v2
docker tag cirros:latest 192.168.41.31/myproject-test/cirros:v3
docker push 192.168.41.31/myproject-test/cirros:v3
查看日志
-
登錄到Harbor的Web管理界面。
-
導(dǎo)航到"系統(tǒng)管理"或"管理"選項(xiàng)卡,通常位于導(dǎo)航欄的頂部或側(cè)邊欄中。
-
在系統(tǒng)管理頁面上,會找到一個名為"日志"、"日志管理"或類似的選項(xiàng)。單擊該選項(xiàng)以進(jìn)入日志管理頁面。
-
在日志管理頁面上,可以選擇查看不同類型的日志,例如系統(tǒng)日志、訪問日志、操作日志等。選擇"操作日志"選項(xiàng)以查看用戶相關(guān)操作的日志。
-
根據(jù)你的需求,可以按時間順序?yàn)g覽日志,也可以使用搜索功能來篩選特定的操作日志。
-
如果需要導(dǎo)出日志,通常會有一個"導(dǎo)出"或"下載"按鈕,可以使用該按鈕將日志保存到本地。
-
請注意,具體的界面和選項(xiàng)可能因Harbor的版本和配置而有所不同。根據(jù)具體情況,可能需要進(jìn)一步查閱Harbor的文檔或參考指南
修改 Harbor.cfg 配置文件
????????要修改Harbor的配置文件harbor.cfg中的可選參數(shù)
停止現(xiàn)有的Harbor實(shí)例: 在Harbor安裝目錄中運(yùn)行以下命令,停止并刪除現(xiàn)有的Harbor容器和相關(guān)卷。
cd /usr/local/harbor
docker-compose down -v
編輯harbor.cfg文件: 使用vim或其他文本編輯器打開harbor.cfg文件,對其中的可選參數(shù)進(jìn)行修改。
vim harbor.cfg
注意:只能修改harbor.cfg文件中的可選參數(shù),不要修改其他部分。
運(yùn)行prepare腳本: 運(yùn)行./prepare命令,它將根據(jù)新的配置文件填充配置。
./prepare
重新創(chuàng)建并啟動Harbor實(shí)例: 運(yùn)行docker-compose up -d命令,它將重新創(chuàng)建并啟動Harbor容器。
docker-compose up -d
如果遇到防火墻相關(guān)的報錯,請確保firewalld服務(wù)已啟動,并執(zhí)行以下命令重啟防火墻服務(wù):
systemctl restart firewalld.service
docker-compose up -d
以上步驟將停止現(xiàn)有的Harbor實(shí)例,更新配置文件,填充配置,然后重新創(chuàng)建并啟動Harbor的實(shí)例。請確保在修改配置文件之前備份原始的harbor.cfg文件,以防止意外情況發(fā)生。
移除 Harbor 服務(wù)容器同時保留鏡像數(shù)據(jù)/數(shù)據(jù)庫,并進(jìn)行遷移
在Harbor服務(wù)器上操作:
切換到Harbor安裝目錄: 使用cd命令切換到Harbor的安裝目錄。
cd /usr/local/harbor
移除Harbor服務(wù)容器: 運(yùn)行docker-compose down -v命令,它將停止并刪除Harbor服務(wù)容器,并刪除相關(guān)的卷。
docker-compose down -v
打包鏡像數(shù)據(jù): 如果你希望保留鏡像數(shù)據(jù),可以將鏡像數(shù)據(jù)目錄打包為一個壓縮文件。
ls /data/registry/docker/registry/v2/repositories/myproject-test
cd /data/registry/docker/registry/v2/repositories/myproject-test
tar zcvf test-registry.tar.gz ./*
這將在當(dāng)前目錄下創(chuàng)建一個名為test-registry.tar.gz的壓縮文件,其中包含myproject-test項(xiàng)目的鏡像數(shù)據(jù)。
遷移Harbor服務(wù):
如果需要重新部署Harbor并移除所有Harbor服務(wù)容器的數(shù)據(jù),可以按照以下步驟進(jìn)行操作:文章來源:http://www.zghlxwxcb.cn/news/detail-802412.html
- 切換到Harbor安裝目錄: 使用cd命令切換到Harbor的安裝目錄。
cd /usr/local/harbor
- 移除Harbor服務(wù)容器和數(shù)據(jù): 運(yùn)行docker-compose down -v命令,它將停止并刪除Harbor服務(wù)容器,并刪除相關(guān)的卷和數(shù)據(jù)。
docker-compose down -v
- 刪除數(shù)據(jù)庫和鏡像數(shù)據(jù): 運(yùn)行rm -r命令,刪除Harbor的數(shù)據(jù)庫和鏡像數(shù)據(jù)目錄。
rm -r /data/database
rm -r /data/registry
以上步驟將移除Harbor服務(wù)容器的全部數(shù)據(jù),包括數(shù)據(jù)庫和鏡像數(shù)據(jù)。請確保在執(zhí)行這些操作之前備份了重要的數(shù)據(jù),并且在重新部署之前已經(jīng)做好了必要的準(zhǔn)備工作。文章來源地址http://www.zghlxwxcb.cn/news/detail-802412.html
到了這里,關(guān)于Docker registry鏡像倉庫,私有倉庫及harbor管理詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!