教你如何用Harbor 私有镜像仓库搭建
? ? 一、Harbor是什么??
Docker有個(gè)形象的比喻叫集裝箱,kubernetes是舵手,而Harbor是港灣,其實(shí)是用來保存容器鏡像的倉庫,企業(yè)使用docker、kubernetes時(shí),一般都需要個(gè)私有鏡像倉庫的,Harbor就是其中的佼佼者。官方的解釋:Harbor是一個(gè)用于存儲(chǔ)和分發(fā)Docker鏡像的企業(yè)級(jí)Registry服務(wù)器。
? ? 二、Harbor的架構(gòu) ? ?
harbor的整體架構(gòu)還是很清晰的,下面簡(jiǎn)單介紹一下,下圖展示harbor主要的功能組件和信息流向。
Proxy: Harbor的registry、UI、token services等組件,都處在一個(gè)反向代理后邊。該代理將來自瀏覽器、docker clients的請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)上。
Registry: 負(fù)責(zé)存儲(chǔ)Docker鏡像,以及處理Docker push/pull請(qǐng)求。因?yàn)镠arbor強(qiáng)制要求對(duì)鏡像的訪問做權(quán)限控制, 在每一次push/pull請(qǐng)求時(shí),Registry會(huì)強(qiáng)制要求客戶端從token service那里獲得一個(gè)有效的token。
Core services: Harbor的核心功能,主要包括如下3個(gè)服務(wù):
UI: 作為Registry Webhook, 以圖像用戶界面的方式輔助用戶管理鏡像。1) WebHook是在registry中配置的一種機(jī)制, 當(dāng)registry中鏡像發(fā)生改變時(shí),就可以通知到Harbor的webhook endpoint。Harbor使用webhook來更新日志、初始化同步j(luò)ob等。2) Token service會(huì)根據(jù)該用戶在一個(gè)工程中的角色,為每一次的push/pull請(qǐng)求分配對(duì)應(yīng)的token。假如相應(yīng)的請(qǐng)求并沒有包含token的話,registry會(huì)將該請(qǐng)求重定向到token service。3) Database 用于存放工程元數(shù)據(jù)、用戶數(shù)據(jù)、角色數(shù)據(jù)、同步策略以及鏡像元數(shù)據(jù)。
Job services: 主要用于鏡像復(fù)制,本地鏡像可以被同步到遠(yuǎn)程Harbor實(shí)例上。
Log: 負(fù)責(zé)收集其他模塊的日志到一個(gè)地方
? ?三、Harbor使用 ? ?
1、安裝 docker
1.1 安裝依賴
## 安裝依賴 yum install -y yum-utils device-mapper-persistent-data lvm21.2 添加阿里云yum源
yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo1.3 更新yum源及安裝Docker-ce
yum?update?-y??&&?yum?install?-y?docker-ce1.4 編寫daemon.json配置文件
mkdir /etc/docker ## 創(chuàng)建 /etc/docker 目錄 ## 配置 daemon. insecure-registries 是后續(xù)用來訪問 harbor 私有倉庫的, 表示可信任的倉庫地址 ## 192.168.3.155:9999為harbor私服的地址和端口 cat > /etc/docker/daemon.json <<eof< span=""> {"exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "registry-mirrors": ["https://tosnxdv7.mirror.aliyuncs.com"], "log-opts": {"max-size": "100m"}, "insecure-registries": ["192.168.3.193"] } EOF</eof<>1.5 重啟docker服務(wù)
systemctl?daemon-reload?&&?systemctl?restart?docker?&&?systemctl?enable?docker2、安裝 docker-compose
wget https://linux-soft-ware.oss-cn-shenzhen.aliyuncs.com/docker-compose chmod +x docker-compose mv docker-compose /usr/local/bin3、安裝 Harbor
3.1 下載Harbor
wget?https://github.com/goharbor/harbor/releases/download/v2.1.4/harbor-offline-installer-v2.1.4.tgz3.2 解壓
## 創(chuàng)建解壓目錄 mkdir /usr/app ## 解壓到指定目錄 tar xf harbor-offline-installer-v2.1.4.tgz ?-C /usr/app3.3 編輯harbor.yml配置文件
vi /usr/app/harborcp harbor.yml.tmpl harbor.ymlvim /usr/app/harbor.ymlhostname: 192.168.3.193 # 修改為自己的IP地址或者域名 # http related config ## 刪除下面的https配置 http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 80 # 修改登錄Harbor的web端密碼(用于管理界面的登錄) harbor_admin_password: 1234564、安裝 harbor
4.1 安裝Harbor
./harbor/install.sh4.2 訪問 harbor
輸入 https://192.168.3.193, 輸入 admin/12345
5、測(cè)試能否登陸私有倉庫
5.1 在客戶端編輯Docker配置文件
vi /etc/docker/daemon.json### 編輯內(nèi)容如下: }"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","registry-mirrors": ["https://tosnxdv7.mirror.aliyuncs.com"],"log-opts": {"max-size": "100m"},## 添加Harbor倉庫的地址(必須添加)"insecure-registries": ["192.168.3.193"] }5.2 加載配置文件重啟Docker服務(wù)
systemctl?daemon-reload?&&?systemctl?restart?docker5.3 使用docker login測(cè)下,是否成功
docker login 192.168.3.193 Username: admin Password: 1234566、測(cè)試鏡像上傳和下載
6.1 docker tag打標(biāo)簽
docker?tag?nginx:latest?192.168.3.193/test/nginx:V26.2 docker push 推送鏡像到倉庫
?docker?push?192.168.3.193/test/nginx:V26.3 docker pull 拉取鏡像
docker?pull?192.168.3.193/test/nginx:V2總結(jié)
以上是生活随笔為你收集整理的教你如何用Harbor 私有镜像仓库搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我们需要什么样的开源教育?
- 下一篇: NET问答: 如何使用 C# 自动化关闭