日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Harbor管理docker镜像(1.7.5版本-主从复制)

發(fā)布時(shí)間:2025/3/19 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Harbor管理docker镜像(1.7.5版本-主从复制) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

harbor簡(jiǎn)介

Harbor是一個(gè)用于存儲(chǔ)和分發(fā)Docker鏡像的企業(yè)級(jí)Registry服務(wù)器,通過(guò)添加一些企業(yè)必需的功能特性,例如安全、標(biāo)識(shí)和管理等,擴(kuò)展了開(kāi)源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ì)等。


harbor組件

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

Proxy:Harbor的registry,?UI,?token等服務(wù),通過(guò)一個(gè)前置的反向代理統(tǒng)一接收瀏覽器、Docker客戶端的請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)給后端不同的服務(wù)。 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)證。 Core?services:?這是Harbor的核心功能,主要提供以下服務(wù): UI:提供圖形化界面,幫助用戶管理registry上的鏡像(image),?并對(duì)用戶進(jìn)行授權(quán)。 webhook:為了及時(shí)獲取registry?上image狀態(tài)變化的情況,?在Registry上配置webhook,把狀態(tài)變化傳遞給UI模塊。 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)求。 Database:為core?services提供數(shù)據(jù)庫(kù)服務(wù),負(fù)責(zé)儲(chǔ)存用戶權(quán)限、審計(jì)日志、Docker?image分組信息等數(shù)據(jù)。 Job?Services:提供鏡像遠(yuǎn)程復(fù)制功能,可以把本地鏡像同步到其他Harbor實(shí)例中。 Log?collector:為了幫助監(jiān)控Harbor運(yùn)行,負(fù)責(zé)收集其他組件的log,供日后進(jìn)行分析

Harbor實(shí)現(xiàn)組成

[root@localhost?harbor]#?docker-compose?psName?????????????????????Command??????????????????State????????????????????????????????????Ports?????????????????????????????? ------------------------------------------------------------------------------------------------------------------------------------- harbor-adminserver???/harbor/start.sh?????????????????Up?(healthy)??????????????????????????????????????????????????????????????????? harbor-core??????????/harbor/start.sh?????????????????Up?(healthy)??????????????????????????????????????????????????????????????????? harbor-db????????????/entrypoint.sh?postgres??????????Up?(healthy)???5432/tcp???????????????????????????????????????????????????????? harbor-jobservice????/harbor/start.sh?????????????????Up????????????????????????????????????????????????????????????????????????????? harbor-log???????????/bin/sh?-c?/usr/local/bin/?...???Up?(healthy)???127.0.0.1:1514->10514/tcp??????????????????????????????????????? harbor-portal????????nginx?-g?daemon?off;?????????????Up?(healthy)???80/tcp?????????????????????????????????????????????????????????? nginx????????????????nginx?-g?daemon?off;?????????????Up?(healthy)???0.0.0.0:443->443/tcp,?0.0.0.0:4443->4443/tcp,?0.0.0.0:80->80/tcp redis????????????????docker-entrypoint.sh?redis?...???Up?????????????6379/tcp???????????????????????????????????????????????????????? registry?????????????/entrypoint.sh?/etc/regist?...???Up?(healthy)???5000/tcp???????????????????????????????????????????????????????? registryctl??????????/harbor/start.sh?????????????????Up?(healthy)

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

nginx:nginx負(fù)責(zé)流量轉(zhuǎn)發(fā)和安全驗(yàn)證,對(duì)外提供的流量都是從nginx中轉(zhuǎn),所以開(kāi)放https的443端口,它將流量分發(fā)到后端的ui和正在docker鏡像存儲(chǔ)的docker?registry。 harbor-jobservice:harbor-jobservice?是harbor的job管理模塊,job在harbor里面主要是為了鏡像倉(cāng)庫(kù)之前同步使用的; harbor-ui:harbor-ui是web管理頁(yè)面,主要是前端的頁(yè)面和后端CURD的接口; registry:registry就是docker原生的倉(cāng)庫(kù),負(fù)責(zé)保存鏡像。 harbor-adminserver:harbor-adminserver是harbor系統(tǒng)管理接口,可以修改系統(tǒng)配置以及獲取系統(tǒng)信息。 這幾個(gè)容器通過(guò)Docker?link的形式連接在一起,在容器之間通過(guò)容器名字互相訪問(wèn)。對(duì)終端用戶而言,只需要暴露proxy?(即Nginx)的服務(wù)端口。 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中; harbor-log:harbor-log是harbor的日志服務(wù),統(tǒng)一管理harbor的日志。通過(guò)inspect可以看出容器統(tǒng)一將日志輸出的syslog。


服務(wù)器準(zhǔn)備


主機(jī)
系統(tǒng)及配置
docker版本
docker-compose版本
harbor版本
192.168.0.201(主)
centos7.2?? 2核2G 30G盤
18.09.5
1.24.01.7.5
192.168.0.202(從)
centos7.2?? 2核2G 30G盤
18.09.51.24.01.7.5

安裝centos7.2系統(tǒng),最小化安裝

設(shè)置好網(wǎng)絡(luò)和防火墻? 網(wǎng)絡(luò)需要能訪問(wèn)外網(wǎng),

ip 192.168.0.201(主)? 192.168.0.202(從)

下面關(guān)閉防火墻

setenforce 0

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux


設(shè)置yum源

cd /etc/yum.repos.d/

yum install vim unzip lrzsz wget net-tools -y

wget?http://mirrors.aliyun.com/repo/Centos-7.repo

wget?http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install epel-release


安裝docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
yum clean all ?&& yum makecache fast
yum install docker-ce -y
systemctl enable docker && systemctl restart docker

修改docker啟動(dòng)文件并重啟docker
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.0.201 ? ?#修改此處增加橙色內(nèi)容(后面ip可換成域名)
systemctl daemon-reload
systemctl restart docker
[root@localhost?harbor]#?docker?version Client:Version:???????????18.09.5API?version:???????1.39Go?version:????????go1.10.8Git?commit:????????e8ff056Built:?????????????Thu?Apr?11?04:43:34?2019OS/Arch:???????????linux/amd64Experimental:??????false

安裝docker-compose

yum install python-pip -y
pip install --upgrade pip
pip install docker-compose #默認(rèn)最新版本,可以使用 docker-compose==version指定安裝版本
docker-compose -version

[root@localhost?harbor]#?docker-compose?-v docker-compose?version?1.24.0,?build?0aa5906


安裝Harbor

harbor有offline和online兩種,這里選offline,下載地址https://github.com/goharbor/harbor/releases


wget方式無(wú)法正常下載或者速度超慢,建議先用瀏覽器下載? 然后上傳到兩個(gè)機(jī)器,

wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.5.tgz

cd /home

tar xf harbor-offline-installer-v1.7.5.tgz.tar

cd harbor/


修改配置文件

多數(shù)信息無(wú)需更改,把hostname變成自己的域名或者ip即可,其他可以保持不變,/data/cert 目錄自行需要?jiǎng)?chuàng)建。

mkdir -p /data/cert

vim harbor.cfg

[root@localhost harbor]# cat harbor.cfg |grep -v "^#"|grep -v "^$"

_version?=?1.7.0 hostname?=?192.168.0.201 ui_url_protocol?=?http max_job_workers?=?10? customize_crt?=?on ssl_cert?=?/data/cert/server.crt ssl_cert_key?=?/data/cert/server.key secretkey_path?=?/data admiral_url?=?NA log_rotate_count?=?50 log_rotate_size?=?200M http_proxy?= https_proxy?= no_proxy?=?127.0.0.1,localhost,core,registry email_identity?=? email_server?=?smtp.mydomain.com email_server_port?=?25 email_username?=?sample_admin@mydomain.com email_password?=?abc email_from?=?admin?<sample_admin@mydomain.com> email_ssl?=?false email_insecure?=?false harbor_admin_password?=?Harbor12345 auth_mode?=?db_auth ldap_url?=?ldaps://ldap.mydomain.com ldap_basedn?=?ou=people,dc=mydomain,dc=com ldap_uid?=?uid? ldap_scope?=?2? ldap_timeout?=?5 ldap_verify_cert?=?true ldap_group_basedn?=?ou=group,dc=mydomain,dc=com ldap_group_filter?=?objectclass=group ldap_group_gid?=?cn ldap_group_scope?=?2 self_registration?=?on token_expiration?=?30 project_creation_restriction?=?everyone db_host?=?postgresql db_password?=?root123 db_port?=?5432 db_user?=?postgres redis_host?=?redis redis_port?=?6379 redis_password?=? redis_db_index?=?1,2,3 clair_db_host?=?postgresql clair_db_password?=?root123 clair_db_port?=?5432 clair_db_username?=?postgres clair_db?=?postgres clair_updaters_interval?=?12 uaa_endpoint?=?uaa.mydomain.org uaa_clientid?=?id uaa_clientsecret?=?secret uaa_verify_cert?=?true uaa_ca_cert?=?/path/to/ca.pem registry_storage_provider_name?=?filesystem registry_storage_provider_config?= registry_custom_ca_bundle?=

執(zhí)行安裝

./install

執(zhí)行命令,Harbor服務(wù)就會(huì)根據(jù)當(dāng)期目錄下的docker-compose.yml開(kāi)始下載依賴的鏡像,檢測(cè)并按照順序依次啟動(dòng)各個(gè)服務(wù)

用docker-compose ps 命令查看

[root@localhost?harbor]#?docker-compose?psName?????????????????????Command??????????????????State????????????????????????????????????Ports?????????????????????????????? ------------------------------------------------------------------------------------------------------------------------------------- harbor-adminserver???/harbor/start.sh?????????????????Up?(healthy)??????????????????????????????????????????????????????????????????? harbor-core??????????/harbor/start.sh?????????????????Up?(healthy)??????????????????????????????????????????????????????????????????? harbor-db????????????/entrypoint.sh?postgres??????????Up?(healthy)???5432/tcp???????????????????????????????????????????????????????? harbor-jobservice????/harbor/start.sh?????????????????Up????????????????????????????????????????????????????????????????????????????? harbor-log???????????/bin/sh?-c?/usr/local/bin/?...???Up?(healthy)???127.0.0.1:1514->10514/tcp??????????????????????????????????????? harbor-portal????????nginx?-g?daemon?off;?????????????Up?(healthy)???80/tcp?????????????????????????????????????????????????????????? nginx????????????????nginx?-g?daemon?off;?????????????Up?(healthy)???0.0.0.0:443->443/tcp,?0.0.0.0:4443->4443/tcp,?0.0.0.0:80->80/tcp redis????????????????docker-entrypoint.sh?redis?...???Up?????????????6379/tcp???????????????????????????????????????????????????????? registry?????????????/entrypoint.sh?/etc/regist?...???Up?(healthy)???5000/tcp???????????????????????????????????????????????????????? registryctl??????????/harbor/start.sh?????????????????Up?(healthy)


Harbor的啟動(dòng)和停止命令:

啟動(dòng)Harbor #?docker-compose?start 停止Harbor #?docker-comose?stop 重啟Harbor #?docker-compose?restart

================================

以上步驟兩個(gè)機(jī)器都做

================================


然后瀏覽器登陸http://192.168.0.201/

賬戶密碼是默認(rèn)admin / Harbor12345

創(chuàng)建test01項(xiàng)目,非公開(kāi)

如果是非公開(kāi)模式,要使用docker login 192.168.0.201 登陸? 才能上傳下載鏡像;

如果想其他機(jī)器直接訪問(wèn)拉取,可以設(shè)置為公開(kāi),docker pull 192.168.0.201/test01/busybox:latest? 命令才不會(huì)出login的錯(cuò)誤。


項(xiàng)目創(chuàng)建完成后,回到201服務(wù)器上,用命令操作鏡像

下載nginx和busybox原始鏡像

docker pull nginx
docker pull busybox

給鏡像打test01項(xiàng)目標(biāo)簽

docker tag busybox:latest 192.168.0.201/test01/busybox:latest
docker tag nginx:latest 192.168.0.201/test01/nginx:latest

接著登錄? ? docker login 192.168.0.201

用admin,密碼Harbor12345 Username?(admin):?admin Password:? Login?Succeeded

登陸后將鏡像push到倉(cāng)庫(kù)

docker push 192.168.0.201/test01/nginx
docker push 192.168.0.201/test01/busybox


測(cè)試本地倉(cāng)庫(kù)中拉取鏡像

docker pull 192.168.0.201/test01/nginx:latest

本機(jī)可以直接拉取

其他機(jī)器需要修改docker的配置 ,增加 --insecure-registry 192.168.0.201? 然后重啟docker才行

并且要求test01項(xiàng)目是設(shè)置為公開(kāi)的,才能直接拉取,否則必須用docker login 192.168.0.201登錄后才能拉取


下面設(shè)置主從復(fù)制

從機(jī)器啟動(dòng)后,無(wú)需配置界面

主要在主機(jī)界面進(jìn)行配置

倉(cāng)庫(kù)管理--新建目標(biāo)--設(shè)置從倉(cāng)庫(kù)


然后 復(fù)制管理--新建規(guī)則

源項(xiàng)目是指主機(jī)器上要同步的項(xiàng)目,比如之前創(chuàng)建的test01

目標(biāo)指的是 從機(jī)器


設(shè)置完成后 可以看到同步狀態(tài)


然后打開(kāi)從機(jī)器的web界面查看是否成功,這里看到已經(jīng)成功同步



可參考文章:

https://www.cnblogs.com/panwenbin-logs/p/10218099.html

https://www.jianshu.com/p/4f9474081c8a

https://www.cnblogs.com/pangguoping/p/7650014.html

https://blog.51cto.com/10950710/2301257


?

Harbor配置TLS證書

上面對(duì)Harbor的配置都是使用的http協(xié)議訪問(wèn),但是我們工作中一般都是配置https訪問(wèn)。

下面演示一下怎么配置Harbor可以使用https訪問(wèn),以及配置TLS證書都需要做哪些工作。

下面是簡(jiǎn)要步驟,詳細(xì)請(qǐng)結(jié)合自己項(xiàng)目調(diào)整。


1 修改harbor配置

hostname?=?docker-hub.vonechain.com ui_url_protocol?=?https customize_crt?=?on ssl_cert?=?/data/cert/server.crt ssl_cert_key?=?/data/cert/server.key

2 增加hosts解析

?cat?/etc/hosts 127.0.0.1???localhost?localhost.localdomain?localhost4?localhost4.localdomain4 ::1?????????localhost?localhost.localdomain?localhost6?localhost6.localdomain6 192.168.0.201??docker-hub.vonechain.com

3 生成自簽名證書

mkdir -p /data/cert

cd /data/cert/

生成key文件

openssl genrsa -out /data/cert/server.key 2048

生成crt文件?? ##注意CN

openssl req -x509 -new -nodes -key /data/cert/server.key -subj "/CN=docker-hub.vonechain.com" -days 5000 -out /data/cert/server.crt

[root@localhost?cert]#?ll 總用量?8 -rw-r--r--?1?root?root?1135?4月??30?21:01?server.crt -rw-r--r--?1?root?root?1679?4月??30?21:00?server.key

4 執(zhí)行安裝harbor??

cd /home/harbor

./install???? ##就會(huì)生成 https 連接了,https://docker-hub.vonechain.com.

Creating?network?"harbor_harbor"?with?the?default?driver Creating?harbor-log?...?done Creating?harbor-db??????????...?done Creating?harbor-adminserver?...?done Creating?redis??????????????...?done Creating?registryctl????????...?done Creating?registry???????????...?done Creating?harbor-core????????...?done Creating?harbor-portal??????...?done Creating?harbor-jobservice??...?done Creating?nginx??????????????...?done ??----Harbor?has?been?installed?and?started?successfully.----Now?you?should?be?able?to?visit?the?admin?portal?at?https://docker-hub.vonechain.com.? For?more?details,?please?visit?https://github.com/goharbor/harbor?.

然后,windows訪問(wèn)https://docker-hub.vonechain.com
需要添加本地hosts,界面配置test01項(xiàng)目并設(shè)置公開(kāi)??? 然后在本機(jī)上作一些鏡像上傳??

docker pull busybox

docker tag busybox:latest docker-hub.vonechain.com/test01/busybox:latest

docker login -u admin -p 'Harbor12345' docker-hub.vonechain.com

docker push docker-hub.vonechain.com/test01/busybox:latest


5 配置客戶端 192.168.0.88

安裝docker

yum install docker -y

增加hosts解析

192.168.0.201??docker-hub.vonechain.com

創(chuàng)建證書目錄

mkdir -p /etc/docker/certs.d/docker-hub.vonechain.com

回到harbor主機(jī)上把crt文件復(fù)制過(guò)去

scp server.crt root@192.168.0.88:/etc/docker/certs.d/docker-hub.vonechain.com/

重啟客戶端docker

vim?/usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd?--insecure-registry?docker-hub.vonechain.com

systemctl restart docker

執(zhí)行拉取鏡像

docker pull docker-hub.vonechain.com/test01/busybox:latest

[root@localhost?~]#?docker?pull?docker-hub.vonechain.com/test01/busybox:latest Trying?to?pull?repository?docker-hub.vonechain.com/test01/busybox?...? latest:?Pulling?from?docker-hub.vonechain.com/test01/busybox fc1a6b909f82:?Pull?complete? Digest:?sha256:f79f7a10302c402c052973e3fa42be0344ae6453245669783a9e16da3d56d5b4 Status:?Downloaded?newer?image?for?docker-hub.vonechain.com/test01/busybox:latest [root@localhost?~]#?docker?images REPOSITORY????????TAG?????IMAGE?ID???????CREATED?????????????SIZE docker-hub.vonechain.com/test01/busybox???latest?????af2f74c517aa?????3?weeks?ago?????1.2?MB

到此https模式可用了,所有客戶端機(jī)器必須用ssl證書才能訪問(wèn)harbor

可參考:https://www.cnblogs.com/pangguoping/p/7650014.html



轉(zhuǎn)載于:https://blog.51cto.com/superleedo/2387925

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Harbor管理docker镜像(1.7.5版本-主从复制)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。