搭建私有倉庫Harbor實現(xiàn)過程(親測無坑)
1. 概述
Harbor 是由 VMware 公司開源的企業(yè)級 Docker Registry 項目,提供了基于角色的訪問控制(Role Based Access Control)、鏡像復(fù)制、漏洞掃描等企業(yè)級功能。
本文將介紹如何搭建 Harbor 私有鏡像倉庫。
1.1 為什么需要私有鏡像倉庫
- 提高鏡像下載速度
- 節(jié)省網(wǎng)絡(luò)帶寬
- 確保鏡像安全性
- 便于管理公司內(nèi)部的容器鏡像
2. 環(huán)境要求
- 操作系統(tǒng): CentOS 7 或更高版本
- Docker Engine: 20.10.0 或更高版本
- Docker Compose: 1.18.0 或更高版本
硬件配置:
- CPU: 最少2核
- 內(nèi)存: 最少4GB
- 硬盤: 最少40GB
3. 安裝步驟
3.1 安裝 Docker
首先配置 Docker 的阿里云鏡像源:
# 安裝必要工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker 阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安裝 Docker
yum install -y docker-ce docker-ce-cli containerd.io
# 配置 Docker 鏡像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 啟動 Docker
systemctl daemon-reload
systemctl enable docker
systemctl start docker
3.2 安裝 Docker Compose
# 下載 Docker Compose 二進(jìn)制文件 # 使用國內(nèi)鏡像下載 Docker Compose wget https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose # 添加可執(zhí)行權(quán)限 chmod +x /usr/local/bin/docker-compose # 驗證安裝 docker-compose --version # 如果上述方法都不工作,可以嘗試使用 yum 安裝 # yum install -y docker-compose-plugin # 然后使用 # docker compose version
![]()
安裝成功:
3.3 下載并安裝 Harbor
# 下載 Harbor 安裝包(如果下載較慢,建議使用國內(nèi)鏡像) wget https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz # 或使用以下鏈接: # wget https://mirrors.aliyun.com/harbor/harbor-offline-installer-v2.8.3.tgz # 解壓安裝包 tar xvf harbor-offline-installer-v2.8.3.tgz cd harbor # 復(fù)制配置文件模板 cp harbor.yml.tmpl harbor.yml
3.4 修改 Harbor 配置文件
編輯 harbor.yml 文件:
# 修改 hostname hostname: lzz.harbor.com # 改為你的域名或IP地址 # 修改 https 相關(guān)配置(使用 https) https: port: 443 certificate: /data/cert/lzz.harbor.com.crt private_key: /data/cert/lzz.harbor.com.key # 修改管理員密碼(建議修改) harbor_admin_password: Harbor12345 # 修改數(shù)據(jù)存儲路徑(可選) data_volume: /data/harbor # 修改數(shù)據(jù)庫密碼(建議修改) database: password: root123
3.5 生成 SSL 證書
啟用 HTTPS,需要生成 SSL 證書:
# 創(chuàng)建證書目錄 mkdir -p /data/cert cd /data/cert # 生成私鑰 openssl genrsa -out ca.key 4096 # 生成證書 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=lzz.harbor.com" \ -key ca.key \ -out ca.crt # 生成服務(wù)器證書 openssl genrsa -out lzz.harbor.com.key 4096 openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=lzz.harbor.com" \ -key lzz.harbor.com.key \ -out lzz.harbor.com.csr # 生成 x509 v3 擴(kuò)展文件 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=lzz.harbor.com DNS.2=harbor DNS.3=hostname EOF # 使用 v3.ext 文件為域名生成證書 openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in lzz.harbor.com.csr \ -out lzz.harbor.com.crt
3.6 安裝 Harbor
# 執(zhí)行安裝腳本 ./install.sh --with-notary --with-trivy # 驗證安裝 docker ps

訪問可視化界面
使用 admin/Harbor12345 登錄

4. 配置使用
4.1 配置 Docker 信任 Harbor 證書
在需要訪問 Harbor 的客戶端機(jī)器上執(zhí)行:
#在140執(zhí)行,發(fā)送證書到遠(yuǎn)程主機(jī) scp /data/cert/lzz.harbor.com.crt user@target-machine:/root/ ##在其他主機(jī)執(zhí)行 # 創(chuàng)建證書目錄 mkdir -p /etc/docker/certs.d/lzz.harbor.com/ # 復(fù)制證書 cp ca.crt /etc/docker/certs.d/lzz.harbor.com/ # 重啟 Docker systemctl restart docker
4.2 登錄 Harbor
# 登錄 Harbor docker login lzz.harbor.com # 使用默認(rèn)賬號密碼 # 用戶名: admin # 密碼: Harbor12345 (如果你修改過配置文件中的密碼,使用修改后的密碼)
登錄成功

4.3 推送鏡像示例
# 標(biāo)記鏡像 docker tag nginx:latest lzz.harbor.com/library/nginx:v1 # 推送鏡像 docker push lzz.harbor.com/library/nginx:v1 # 拉取鏡像 docker pull lzz.harbor.com/library/nginx:v1

5. 常見問題
5.1 無法訪問 Harbor 界面
- 檢查防火墻設(shè)置
# 關(guān)閉防火墻 systemctl stop firewalld systemctl disable firewalld # 或者開放需要的端口 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=4443/tcp firewall-cmd --reload
5.2 推送鏡像失敗
- 檢查證書配置
- 確認(rèn) Docker 客戶端配置了正確的證書
- 檢查存儲空間是否足夠
5.3 Harbor 服務(wù)無法啟動
檢查日志:
docker-compose ps docker-compose logs
5.4 修改 Harbor 配置
如果需要修改 Harbor 配置:
# 停止 Harbor docker-compose down # 修改配置文件 harbor.yml # 重新配置 ./prepare # 啟動 Harbor docker-compose up -d
6. 維護(hù)建議
6.1 定期備份
# 備份 Harbor 的數(shù)據(jù) cp -r /data/harbor /data/harbor_backup_$(date +%Y%m%d) # 備份數(shù)據(jù)庫 docker-compose exec harbor-db mysqldump -u root -p harbor > harbor_db_backup_$(date +%Y%m%d).sql
6.2 監(jiān)控
建議配置以下監(jiān)控:
- 系統(tǒng)資源使用情況
- Harbor 服務(wù)狀態(tài)
- 存儲空間使用情況
- 訪問日志
6.3 安全建議
- 及時更新 Harbor 版本
- 使用強(qiáng)密碼
- 啟用 HTTPS
- 配置訪問控制策略
- 定期掃描鏡像漏洞
參考資料:
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux下MySQL數(shù)據(jù)庫定時備份腳本與Crontab配置教學(xué)
在生產(chǎn)環(huán)境中,數(shù)據(jù)庫是核心資產(chǎn)之一,定期備份數(shù)據(jù)庫可以有效防止意外數(shù)據(jù)丟失,本文將分享一份 MySQL 定時備份腳本,并講解如何通過 crontab 實現(xiàn)自動化,感興趣的小伙伴可以參考一下2025-09-09
linux centos7口令復(fù)雜度、登陸失敗策略詳解
本文介紹了在Linux CentOS 7中配置口令復(fù)雜度和有效期策略的方法,包括修改PAM配置文件設(shè)置密碼復(fù)雜度、編輯密碼策略文件設(shè)置密碼有效期、配置登錄失敗鎖定賬戶策略以及配置超時退出策略2026-04-04
Linux集群/分布式環(huán)境下session處理的五種策略詳解
這篇文章主要給大家介紹了關(guān)于Linux集群/分布式環(huán)境下session處理的五種策略,文中通過示例代碼及圖片介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
lanmp(Linux Apache Nginx Mysql Php) 的安裝配置
lanmp(Linux Apache Nginx Mysql Php) 的安裝配置,需要的朋友可以參考下。2010-11-11
Unix/Linux系統(tǒng)下的nobody用戶與nologin詳細(xì)介紹
linux系統(tǒng)下的nobody用戶是什么用戶,nologin又是什么?本文為大家詳細(xì)介紹了這兩個no字輩2018-10-10

