Docker搭建私有鏡像中心Harbor的詳細過程
公網(wǎng)鏡像中心
Docker Hub 和阿里云都是Docker 的公網(wǎng)鏡像中心,用戶可以將鏡像push到鏡像中心的鏡像倉庫里,可以將倉庫設為私有庫,他人無法訪問,保證鏡像安全。
但是,實際工作中,一般在公司內(nèi)部搭建一個私有鏡像中心。
發(fā)布鏡像到阿里云
- 注冊一個阿里云賬號,并完成實名認證
- 創(chuàng)建鏡像中心實例
- 登錄阿里云后搜索“容器鏡像服務”,然后進入并創(chuàng)建個人實例
- 設置Registry登錄密碼。
- 創(chuàng)建命名空間
- 阿里云在鏡像中心和鏡像倉庫之間增加了一層“命名空間”,可以將鏡像倉庫分類到不同的命名空間中,所以要先創(chuàng)建命名空間。
- 創(chuàng)建鏡像倉庫,先選擇好命名空間

這里選擇本地倉庫。
登錄阿里云鏡像中心
docker login --username=dt_5224810793 crpi-8nnmc9aojy1lrfpp.cn-chengdu.personal.cr.aliyuncs.com
復制并重命名鏡像
docker tag hello-my-world crpi-8nnmc9aojy1lrfpp.cn-chengdu.personal.cr.aliyuncs.com/ali_1/ali_1_ck:1.0
推送鏡像
docker push crpi-8nnmc9aojy1lrfpp.cn-chengdu.personal.cr.aliyuncs.com/ali_1/ali_1_ck:1.0
此時就推送成功了!

登出阿里云倉庫
docker logout crpi-8nnmc9aojy1lrfpp.cn-chengdu.personal.cr.aliyuncs.com
私有鏡像中心
htpasswd命令
registry 私有鏡像中心默認沒有用戶認證功能,可通過htpasswd來實現(xiàn)用戶認證!
htpasswd用于創(chuàng)建、更新http基本認證的密碼文件。
安裝httpd-tools
htpasswd 需要先安裝httpd-tools 工具包
yum install -y httpd-tools
創(chuàng)建文件并添加用戶
創(chuàng)建/root/auth 目錄并進入。在其中存放生成的認證文件
# 指定用戶zhangsan 密碼123 并寫入到auth目錄中的htpasswd.user文件中 htpasswd -Bbc htpasswd.user zhangsan 123 # 再創(chuàng)建兩個用戶,此時無需選項-c htpasswd -Bb htpasswd.user lisi 123 htpasswd -Bb htpasswd.user wangwu 123
修改密碼
# 若指定用戶不存在,則添加用戶;若存在,就修改密碼 htpasswd -Bb htpasswd.user wangwu 456
刪除用戶名和密碼
htpasswd -D htpasswd.user wangwu
使用-n選項創(chuàng)建文件
# -n選項和重定向符可將密碼寫入到文件,比如將用戶名和密碼寫入當前目錄的authfile中 htpasswd -Bbn wangwu 456 > authfile # 這種情況下修改密碼可通過追加重定向符來完成 htpasswd -Bbn Tom 456 >> authfile
容器的退出狀態(tài)碼
退出狀態(tài)碼可以向用戶反饋容器中應用的退出方式!
狀態(tài)碼分類
容器退出狀態(tài)碼是【0,255】范圍內(nèi)的整數(shù),分為三類:0、【1,128】、【129,255】
- 狀態(tài)碼0:表示容器中應用正常退出。
- 【1,128】:非正常退出,容器內(nèi)部運行錯誤引發(fā)的容器無法啟動或應用運行出錯。
- 【129,255】:非正常退出,表示容器接收到終止信號而退出。
常見狀態(tài)碼如下:
- 狀態(tài)碼1:表示程序內(nèi)部錯誤(比如:分母為0,內(nèi)存溢出)或Dockerfile中的無效引用(比如引用了不存在的文件)
- 狀態(tài)碼125:容器啟動后要執(zhí)行【command】,但是【command】沒運行成功,原因一般是【command】引用了未定義的變量或者執(zhí)行了沒權限的目錄。
- 狀態(tài)碼126:容器啟動后要執(zhí)行【command】,但是【command】沒運行成功,原因是缺少依賴。
- 狀態(tài)碼127:容器啟動后要執(zhí)行【command】,但是【command】沒運行成功,原因是引用了不存在的文件或目錄。
- 狀態(tài)碼128:當自己開發(fā)的容器內(nèi)的代碼引發(fā)退出命令,但是給出的狀態(tài)碼不再0-255范圍內(nèi),就會返回128
- 狀態(tài)碼130:容器中的應用接收到來自操作系統(tǒng)的終止信號,應用立即退出,返回130.
- 狀態(tài)碼137:容器中的應用接收到來自docker的強制終止信號,應用立即退出,返回137.
- 狀態(tài)碼143:容器中的應用接收到來自docker的優(yōu)雅終止信號,如果沒用戶訪問,容器會立即退出,并返回143;如果有用戶訪問,那么docker會等待10s,10s后向容器發(fā)送kill信號,返回137狀態(tài)碼
退出狀態(tài)碼的查看方式:docker ps -a 或 docker inspect

容器重啟策略
在生產(chǎn)環(huán)境下,容器退出后使用手動重啟不現(xiàn)實,這時可以使用容器重啟策略,在容器創(chuàng)建時指定--restart 選項 不同的值,達到不同的效果。
- no:默認策略,退出時不重啟。
- on-failure[:n]: 容器非正常退出時(退出狀態(tài)碼非0)才重啟容器,氣候可以跟一個整數(shù),表示重啟次數(shù)。
- always:只要退出就重啟
- unless-stopped:只要退出就重啟,除非docker stop 或 docker kill 命令停止容器。
harbor私有鏡像中心[HTTP]
一般私有鏡像中心是一臺換門的服務器,不用做平時Docker容器的運行管理。其他要對其進行push或pull操作的Docker主機稱為Docker客戶端。
Harbor 是Go語言開發(fā)的一款Registry server 開源項目,在Docker Registry 的基礎上進行二次封裝。作為一個企業(yè)級私有Registry服務器,Harbor提供更好的性能和安全,也提供了方便的web管理界面。
安裝Harbor
下載安裝包
wget https://github.com/goharbor/harbor/releases/download/v2.6.2/harbor-offline-installer-v2.6.2.tgz
解壓安裝包
tar -zxvf harbor-offline-installer-v2.6.2.tgz -C /opt/apps/
修改harbor.yml
復制一份harbor解壓包中的harbor.yml.tmpl 并重命名為harbor.yml
cp harbor.yml.tmpl harbor.yml
- 修改harbor.yml三個地方:
- 將hostname 指定為當前主機IP
- 注釋掉所有https相關配置
- 修改admin用戶的密碼
運行prepare
在harbor解壓目錄中運行prepare命令。該命令會先拉取prepare鏡像,然后生成很多的配置文件。
./prepare
運行 install.sh
在harbor解壓目錄中運行install.sh命令,其會自動完成五步的安裝過程,并最后啟動很多容器。
./install.sh
此時就可以通過http://IP 進行訪問了。

Habor 的啟停
Harbor是由10個容器同時運行完成的,而且是同福哦docker-compose完成的容器編排。
Harbor安裝完后會在解壓目錄下生成docker-compose.yml文件,所以Harbor的啟停命令都是由docker-compose完成的,且需要在Harbor的解壓目錄中完成。
docker compose stop # 停止 docker compose up -d # 啟動
Docker客戶端操作
- 修改daemon.json文件
- Docker客戶端默認采用https請求,但私有鏡像中心不接收https請求。需要手動修改Docker客戶端的/etc/docker/daemon.json文件。

重啟Docker引擎
systemctl restart docker
登錄私有鏡像中心,輸入用戶名和密碼
docker login 192.168.192.101
復制并重命名鏡像
通過docker tag 對鏡像進行復制并重命名。
重命名鏡像的<repository>中采用<domain-name>/<project-name>/<software-name>
如果要區(qū)分用戶,也可以采用<domain-name>/<project-name>/<username>/<software-name>
docker tag hello-my-world 192.168.192.101/test/admin/hmyw:1.0
推送鏡像
docker push 192.168.192.101/test/admin/hmyw:1.0
此時鏡像推送完成
登出私有鏡像中心
docker logout 192.168.192.101
到此這篇關于Docker--搭建私有鏡像中心Harbor的文章就介紹到這了,更多相關Docker私有鏡像中心Harbor內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker部署KingbaseES數(shù)據(jù)庫操作指南
本文主要介紹了Docker部署KingbaseES數(shù)據(jù)庫操作指南,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2026-04-04
基于Docker、Nginx和Jenkins實現(xiàn)前端自動化部署
本文主要介紹了搭建Docker+Nginx+Jenkins環(huán)境,用于實現(xiàn)前端自動化部署的流程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
部署k8s和docker、jenkins的區(qū)別和聯(lián)系詳析
Jenkins、Docker與Kubernetes是現(xiàn)代軟件開發(fā)和運維中不可或缺的核心工具,它們分別承擔不同層次的關鍵角色,這篇文章主要介紹了部署k8s和docker、jenkins的區(qū)別和聯(lián)系的相關資料,需要的朋友可以參考下2025-11-11

