溫馨提示×

溫馨提示×

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

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

Docker Registry--harbor安裝和簡單使用szyd

發(fā)布時間:2021-11-10 17:39:46 來源:億速云 閱讀:297 作者:柒染 欄目:云計(jì)算

Docker Registry--harbor安裝和簡單使用szyd ,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

1.什么是harbor

簡單的說,Harbor 是一個企業(yè)級的 Docker Registry,可以實(shí)現(xiàn) images 的私有存儲和日志統(tǒng)計(jì)權(quán)限控制等功能,并支持創(chuàng)建多項(xiàng)目(Harbor 提出的概念),基于官方 Registry V2 實(shí)現(xiàn)。

2.1、安裝 Docker

執(zhí)行以下命令安裝 Docker

curl -fsSL https://get.docker.io | bash

2.2、安裝 docker-compose

默認(rèn)的 官方文檔 安裝命令如下 :

curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
經(jīng)過本人測試,其文件托管在亞馬遜上,偉大的防火墻成功阻止下載……

有能力的童鞋可以使用梯子,我已經(jīng)下載好了一個點(diǎn)擊下載 ;下載后直接 cp 到/usr/local/bin 下并給與可執(zhí)行權(quán)限即可。

3.搭建 Harbor

3.1、克隆源碼

git clone https://github.com/vmware/harbor

3.2、修改配置

cd harbor/Deploy/
vim harbor.cfg

配置樣例如下 :

## Configuration file of Harbor

#The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
# 指定 hostname,一般為IP,或者域名,用于登錄 Web UI 界面
hostname = 10.211.55.17

#The protocol for accessing the UI and token/notification service, by default it is http.
#It can be set to https if ssl is enabled on nginx.
# URL 訪問方式,SSL 需要配置 nginx
ui_url_protocol = http

#Email account settings for sending out password resetting emails.
# 郵件相關(guān)信息配置,如忘記密碼發(fā)送郵件
email_server = smtp.xxxxxx.com
email_server_port = 465
email_username = reg@mritd.me
email_password = xxxxxx
email_from = docker <reg@mritd.me>
email_ssl = true

##The password of Harbor admin, change this before any production use.
# 默認(rèn)的 Harbor 的管理員密碼,管理員用戶名默認(rèn) admin
harbor_admin_password = Harbor12345

##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.
#Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.
# 指定 Harbor 的權(quán)限驗(yàn)證方式,Harbor 支持本地的 mysql 數(shù)據(jù)存儲密碼,同時也支持 LDAP
auth_mode = db_auth

#The url for an ldap endpoint.
# 如果采用了 LDAP,此處填寫 LDAP 地址
ldap_url = ldaps://ldap.mydomain.com

#The basedn template to look up a user in LDAP and verify the user's password.
# LADP 驗(yàn)證密碼的方式(我特么沒用過這么高級的玩意)
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com

#The password for the root user of mysql db, change this before any production use.
# mysql 數(shù)據(jù)庫 root 賬戶密碼
db_password = root123

#Turn on or off the self-registration feature
# 是否允許開放注冊
self_registration = on

#Turn on or off the customize your certicate
# 允許自簽名證書
customize_crt = on

#fill in your certicate message
# 自簽名證書信息
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = mritd
crt_organizationalunit = mritd
crt_commonname = mritd.me
crt_email = reg.mritd.me
#####

3.3、生成相關(guān)配置

cd harbor/Deploy/
./prepare

Docker Registry--harbor安裝和簡單使用szyd

3.4、編譯 image 并啟動

cd harbor/Deploy/
docker-compose up -d

Docker Registry--harbor安裝和簡單使用szyd

3.5、啟動后相關(guān)容器

正常啟動成功后會有 5 個 Contianer :
  • Proxy : 由Nginx 服務(wù)器構(gòu)成的反向代理

  • Registry : 由Docker官方的開源registry 鏡像構(gòu)成的容器實(shí)例

  • UI : 即架構(gòu)中的core services, 構(gòu)成此容器的代碼是Harbor項(xiàng)目的主體

  • Mysql : 由官方MySql鏡像構(gòu)成的數(shù)據(jù)庫容器

  • Log : 運(yùn)行著rsyslogd的容器,通過log-driver的形式收集其他容器的日志

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

Docker Registry--harbor安裝和簡單使用szyd

4.訪問 Web UI 并測試

4.1、主頁

默認(rèn)的訪問地址即為 harbor.cfg 中 hostname 地址,直接訪問即可,如下

Docker Registry--harbor安裝和簡單使用szyd

如果 harbor.cfg 中 self_registration 屬性設(shè)置為 off ,那么普通用戶將無法自己實(shí)現(xiàn)注冊,只能由管理員創(chuàng)建用戶,主頁右上角的注冊按鈕也會消失。

4.2、登錄

Harbor 默認(rèn)管理員用戶為 admin ,密碼在 harbor.cfg 中設(shè)置過,默認(rèn)的是Harbor12345 ,可直接登陸

Docker Registry--harbor安裝和簡單使用szyd

4.3、創(chuàng)建私有項(xiàng)目

Harbor 有一個項(xiàng)目的概念,項(xiàng)目名可以理解為 Docker Hub 的用戶名,其下可以后很多 images,Harbor 的項(xiàng)目必須登錄后方可 push,公有項(xiàng)目和私有項(xiàng)目的區(qū)別是對其他用戶是否可見

Docker Registry--harbor安裝和簡單使用szyd

4.4、push 鏡像

4.4.1、設(shè)置 http 倉庫地址

由于采用了默認(rèn)的 http 方式連接,而 Docker 認(rèn)為這是不安全的,所以在 push 之前需要調(diào)整一下 docker 配置,修改/lib/systemd/system/docker.service文件,添加--insecure-registry 172.16.80.182,重啟docker daemon 和service
(命令:systemctl daemon-reload 和 systemctl restart docker.service)。

ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry 172.16.81.99

其中 IP 地址要指向 harbor.cfg 中的 hostname ,然后執(zhí)行 docker-compose stop 停掉所有 Contianer,再執(zhí)行 service docker restart 重啟 Dokcer 服務(wù),最后執(zhí)行 docker-compose start 即可。

注意 : Docker 服務(wù)重啟后,執(zhí)行 docker-compose start 時有一定幾率出現(xiàn)如下錯誤(或者目錄已存在等錯誤),此時在 docker-compose stop 一下然后在啟動即可,實(shí)在不行再次重啟 Dokcer 服務(wù),千萬不要手賤的去刪文件(別問我怎么知道的)

Docker Registry--harbor安裝和簡單使用szyd

4.4.2、Harbor 項(xiàng)目和權(quán)限(角色)
用戶本身擁有的項(xiàng)目,登陸后可直接 push,其他的用戶創(chuàng)建的項(xiàng)目取決于項(xiàng)目是否添加了對應(yīng)用戶和權(quán)限,
也就是說用戶是否可以向一個項(xiàng)目 push 鏡像,取決于權(quán)限(角色)設(shè)置,如下所示,在項(xiàng)目中可以設(shè)置成員和其權(quán)限

Docker Registry--harbor安裝和簡單使用szyd

Docker Registry--harbor安裝和簡單使用szyd

對于權(quán)限(角色), Project Admin 和 Developer 可以有 push 的權(quán)限,而Guest 只能查看和 pull
4.4.3、push 鏡像

首先使用一個對目標(biāo)項(xiàng)目具有 push 權(quán)限的用戶登錄,以下 push 的目標(biāo)是 mritd 項(xiàng)目,test1 用戶在項(xiàng)目里定義為 Developer ,所以登錄后 push 即可

Docker Registry--harbor安裝和簡單使用szyd

然后 tag 一個 image,名稱一定要標(biāo)準(zhǔn)( registryAddress[:端口]/項(xiàng)目/imageName[:tag] ),最后將其 push 即可

(如果本地有的image,是不會去Registry庫中查找的?。ú檎翼樞蚴窍日冶镜兀蟛檎襌egistry庫,默認(rèn)庫是docker hub)
設(shè)置首選Registry庫可以通過 --insecure-registry 參數(shù)指定。
image的格式是$registry_url/name:tag  $registry_url是Registry庫的鏈接地址,pull push是通過這個地址來判斷的。
后面的端口號,可以通過加一個proxy來解決!
)

Docker Registry--harbor安裝和簡單使用szyd

最后可在 Web UI 中查看剛剛 push 的 image

Docker Registry--harbor安裝和簡單使用szyd

看完上述內(nèi)容,你們掌握Docker Registry--harbor安裝和簡單使用szyd 的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

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

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

AI