溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

發(fā)布時(shí)間:2020-07-30 10:26:29 來(lái)源:網(wǎng)絡(luò) 閱讀:3694 作者:蔣將將 欄目:云計(jì)算

一、Harbor簡(jiǎn)介

1、簡(jiǎn)介

Harbor是一個(gè)用于存儲(chǔ)和分發(fā)Docker鏡像的企業(yè)級(jí)Registry服務(wù)器,通過(guò)添加一些企業(yè)必需的功能特性,例如安全、標(biāo)識(shí)和管理等,擴(kuò)展了開源Docker Distribution。作為一個(gè)企業(yè)級(jí)私有Registry服務(wù)器,Harbor提供了更好的性能和安全。提升用戶使用Registry構(gòu)建和運(yùn)行環(huán)境傳輸鏡像的效率。Harbor支持安裝在多個(gè)Registry節(jié)點(diǎn)的鏡像資源復(fù)制,鏡像全部保存在私有Registry中, 確保數(shù)據(jù)和知識(shí)產(chǎn)權(quán)在公司內(nèi)部網(wǎng)絡(luò)中管控。另外,Harbor也提供了高級(jí)的安全特性,諸如用戶管理,訪問(wèn)控制和活動(dòng)審計(jì)等。

2、特性

(1)基于角色的訪問(wèn)控制 :用戶與Docker鏡像倉(cāng)庫(kù)通過(guò)“項(xiàng)目”進(jìn)行組織管理,一個(gè)用戶可以對(duì)多個(gè)鏡像倉(cāng)庫(kù)在同一命名空間(project)里有不同的權(quán)限。

(2)鏡像復(fù)制 : 鏡像可以在多個(gè)Registry實(shí)例中復(fù)制(同步)。尤其適合于負(fù)載均衡,高可用,混合云和多云的場(chǎng)景。

(3)圖形化用戶界面 : 用戶可以通過(guò)瀏覽器來(lái)瀏覽,檢索當(dāng)前Docker鏡像倉(cāng)庫(kù),管理項(xiàng)目和命名空間。

(4)AD/LDAP 支持 : Harbor可以集成企業(yè)內(nèi)部已有的AD/LDAP,用于鑒權(quán)認(rèn)證管理。

(5)審計(jì)管理 : 所有針對(duì)鏡像倉(cāng)庫(kù)的操作都可以被記錄追溯,用于審計(jì)管理。

(6)國(guó)際化 : 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語(yǔ)言將會(huì)添加進(jìn)來(lái)。

(7)RESTful API : RESTful API 提供給管理員對(duì)于Harbor更多的操控, 使得與其它管理軟件集成變得更容易。

(8)部署簡(jiǎn)單 : 提供在線和離線兩種安裝工具, 也可以安裝到vSphere平臺(tái)(OVA方式)虛擬設(shè)備。

3、組件

Harbor在架構(gòu)上主要由6個(gè)組件構(gòu)成:

(1)Proxy:Harbor的registry, UI, token等服務(wù),通過(guò)一個(gè)前置的反向代理統(tǒng)一接收瀏覽器、Docker客戶端的請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)給后端不同的服務(wù)。

(2)Registry: 負(fù)責(zé)儲(chǔ)存Docker鏡像,并處理docker push/pull 命令。由于我們要對(duì)用戶進(jìn)行訪問(wèn)控制,即不同用戶對(duì)Docker image有不同的讀寫權(quán)限,Registry會(huì)指向一個(gè)token服務(wù),強(qiáng)制用戶的每次docker pull/push請(qǐng)求都要攜帶一個(gè)合法的token, Registry會(huì)通過(guò)公鑰對(duì)token 進(jìn)行解密驗(yàn)證。

(3)Core services: 這是Harbor的核心功能,主要提供以下服務(wù):

1)UI:提供圖形化界面,幫助用戶管理registry上的鏡像(image), 并對(duì)用戶進(jìn)行授權(quán)。

2)webhook:為了及時(shí)獲取registry 上image狀態(tài)變化的情況, 在Registry上配置webhook,把狀態(tài)變化傳遞給UI模塊。

3)token 服務(wù):負(fù)責(zé)根據(jù)用戶權(quán)限給每個(gè)docker push/pull命令簽發(fā)token. Docker 客戶端向Regi?stry服務(wù)發(fā)起的請(qǐng)求,如果不包含token,會(huì)被重定向到這里,獲得token后再重新向Registry進(jìn)行請(qǐng)求。

(4)Database:為core services提供數(shù)據(jù)庫(kù)服務(wù),負(fù)責(zé)儲(chǔ)存用戶權(quán)限、審計(jì)日志、Docker image分組信息等數(shù)據(jù)。

(5)Job Services:提供鏡像遠(yuǎn)程復(fù)制功能,可以把本地鏡像同步到其他Harbor實(shí)例中。

(6)Log collector:為了幫助監(jiān)控Harbor運(yùn)行,負(fù)責(zé)收集其他組件的log,供日后進(jìn)行分析。

各個(gè)組件之間的關(guān)系如下圖所示:

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

4、Harbor構(gòu)建

Harbor的每個(gè)組件都是以Docker容器的形式構(gòu)建的,官方也是使用Docker Compose來(lái)對(duì)它進(jìn)行部署。用于部署Harbor的Docker Compose模板位于 harbor/docker-compose.yml,打開這個(gè)模板文件,發(fā)現(xiàn)Harbor是由7個(gè)容器組成的;

(1)nginx:nginx負(fù)責(zé)流量轉(zhuǎn)發(fā)和安全驗(yàn)證,對(duì)外提供的流量都是從nginx中轉(zhuǎn),所以開放https的443端口,它將流量分發(fā)到后端的ui和正在docker鏡像存儲(chǔ)的docker registry。

(2)harbor-jobservice:harbor-jobservice 是harbor的job管理模塊,job在harbor里面主要是為了鏡像倉(cāng)庫(kù)之前同步使用的;

(3)harbor-ui:harbor-ui是web管理頁(yè)面,主要是前端的頁(yè)面和后端CURD的接口;

(4)registry:registry就是docker原生的倉(cāng)庫(kù),負(fù)責(zé)保存鏡像。

(5)harbor-adminserver:harbor-adminserver是harbor系統(tǒng)管理接口,可以修改系統(tǒng)配置以及獲取系統(tǒng)信息。

(6)harbor-db:harbor-db是harbor的數(shù)據(jù)庫(kù),這里保存了系統(tǒng)的job以及項(xiàng)目、人員權(quán)限管理。由于本harbor的認(rèn)證也是通過(guò)數(shù)據(jù),在生產(chǎn)環(huán)節(jié)大多對(duì)接到企業(yè)的ldap中;

(7)harbor-log:harbor-log是harbor的日志服務(wù),統(tǒng)一管理harbor的日志。通過(guò)inspect可以看出容器統(tǒng)一將日志輸出的syslog。

這幾個(gè)容器通過(guò)Docker link的形式連接在一起,這樣,在容器之間可以通過(guò)容器名字互相訪問(wèn)。對(duì)終端用戶而言,只需要暴露proxy (即Nginx)的服務(wù)端口。

二、環(huán)境準(zhǔn)備

1、生產(chǎn)環(huán)境

名稱

版本

系統(tǒng)環(huán)境

CentOS Linux release 7.5.1804 (Core)

docker-ce

Docker version 18.09.0

docker-compose

1.22.0

Harbor

v1.6.0

安裝位置

/usr/local/harbor

2、暫時(shí)關(guān)閉防火墻和selinux

3、服務(wù)下載地址:

docker源:wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

docker-compose:https://github.com/docker/compose/releases/

Harbor:https://github.com/goharbor/harbor/releases

三、搭建服務(wù)

1、安裝docker-ce

#安裝

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum install docker-ce -y

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

#卸載

# yum remove docker-ce -y

卸載后images,containers,volumes,configuration files 是不能自動(dòng)刪除的,為了刪除all images,containers,and volumes,請(qǐng)執(zhí)行如下命令:

# rm -rf /var/lib/docker

2、安裝docker-compose

方法一:二進(jìn)制

(1)下載包

# wget  https://github.com/docker/compose/releases/download/1.22.0/docker-compose-Linux-x86_64

(2)安裝服務(wù)

# mv docker-compose-Linux-x86_64 docker-compose

# cp docker-compose /usr/local/bin/

# chmod u+x /usr/local/bin/docker-compose

(3)根據(jù)自己的情況決定是否安裝命令補(bǔ)全功能

# yum install bash-completion

(4)查看

# docker-compose

# docker-compose  version

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

(5)卸載

# rm  /usr/local/bin/docker-compose

方法二:pip

(1)安裝

# yum install python-pip

# pip install  docker-compose

(2)卸載:

# pip uninstall  docker-compose

3、安裝Harbor

(1)下載

# cd /usr/local/src/

# wget  https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-online-installer-v1.6.0.tgz

(2)解壓文件

# tar -xvf harbor-online-installer-v1.6.0.tgz -C /usr/local/

# cd /usr/local/harbor/

(3)修改配置文件

# vim harbor.cfg

#域名配置

hostname = www.jiangjj.com

#郵箱配置

email_server = smtp.qq.com

email_server_port = 25

email_username = jiangjj@qq.com

email_password = 123456

email_from = admin <sample_admin@mydomain.com>

email_ssl = false

email_insecure = false

#禁止用戶注冊(cè)

self_registration = off

#設(shè)置只有管理員可以創(chuàng)建項(xiàng)目

project_creation_restriction = adminonly

(4)執(zhí)行腳本

# ./prepare

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

# ./install.sh

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

(5)查看

# docker ps

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

或者

# docker-compose ps

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

(6)Harbor的啟動(dòng)和停止

啟動(dòng)Harbor

# docker-compose start

停止Harbor

# docker-comose stop

重啟Harbor

# docker-compose restart

4、訪問(wèn)

在瀏覽器輸入www.jiangjj.com,因?yàn)槲遗渲玫挠蛎麨閣ww.jiangjj.com。

默認(rèn)賬號(hào)密碼: admin / Harbor12345 登錄后修改密碼

http://www.jiangjj.com/

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

四、Harbor配置TLS證書

上面對(duì)Harbor的配置都是使用的http協(xié)議訪問(wèn),但是為了安全性我們工作中一般都是配置https訪問(wèn)。在此,做一個(gè)簡(jiǎn)單的配置如下:

1、修改harbor配置文件(購(gòu)買證書)

hostname = www.jiangjj.com

ui_url_protocol = https

ssl_cert = /etc/certs/jiangjj.com.crt

ssl_cert_key = /etc/certs/jiangjj.com.key

2、創(chuàng)建自簽名證書key文件

# mkdir /etc/certs

# openssl genrsa -out /etc/certs/jiangjj.com.key 2048

3、創(chuàng)建自簽名證書crt文件

# openssl req -x509 -new -nodes -key /etc/certs/jiangjj.com.key -subj "/CN=www.jiangjj.com" -days 5000 -out /etc/certs/jiangjj.com.crt

4、重新安裝harbor

# ./prepare

./install.sh

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

5、配置客戶端證書

# mkdir -p /etc/docker/certs.d/www.jiangjj.com

#把crt證書拷貝到新建目錄下,重啟docker即可

6、測(cè)試

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

五、測(cè)試上傳下載鏡像

1、在各個(gè)客戶端修改docker

# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --insecure-registry www.jiangjj.com

增加 --insecure-registry  www.jiangjj.com 即可。

重啟docker:

# systemctl daemon-reload

# systemctl  restart docker

或者

創(chuàng)建/etc/docker/daemon.json文件,在文件中指定倉(cāng)庫(kù)地址

# cat > /etc/docker/daemon.json << EOF

{ "insecure-registries":["www.jiangjj.com"] }

EOF

然后重啟docker就可以。

# systemctl  restart docker

2、上傳鏡像

如果不是自己的鏡像需要打包

# docker tag centos:7.4.1708 www.jiangjj.com/jiangjj/centos:7.4.1708

#授權(quán)

# docker login www.jiangjj.com

#上傳

# docker push www.jiangjj.com/jiangjj/centos:7.4.1708

在harbor查看如下圖:

搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)搭建Harbor企業(yè)級(jí)docker倉(cāng)庫(kù)

3、客戶端拉去鏡像

# docker pull www.jiangjj.com/jiangjj/centos:7.4.1708

即可


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI