這篇文章主要講解了“Harbo如何使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Harbo如何使用”吧!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了皇姑免費(fèi)建站歡迎大家使用!
基本架構(gòu)
Harbor 可以使用以下三種方式進(jìn)行安裝部署:
在線安裝:使用者可以直接從docker hub上下載harbor的官方鏡像。
離線安裝:使用者需要下載源碼包,并進(jìn)行自己構(gòu)建images。源碼包比較大
Virtual Appliance:一般使用這種方式在第三方平臺(tái)搭建一個(gè)私有倉(cāng)庫(kù)作為平臺(tái)的組建比如vsphere等,需要下載OVA 版本的Harbor.
官方下載頁(yè)面 請(qǐng)點(diǎn)擊我.
需要安裝Harbor's virtual appliance,請(qǐng)點(diǎn)擊我.
本篇指導(dǎo)主要講解通過(guò)使用在線和離線方式去一步步安裝和配置Harbor.安裝的步驟基本上都是相同的。
如果用戶運(yùn)行了老版本的harbor,可能需要遷移數(shù)據(jù)到新的數(shù)據(jù)庫(kù)隊(duì)列中,詳細(xì)的步驟請(qǐng)**點(diǎn)擊我**
另外在kubernetes上面部署的步驟和看以下鏈接**harbor on kubernets **
Harbor 被作為一個(gè)docker容器部署在服務(wù)區(qū)上,因此,他能夠被部署在任何linux發(fā)行版本。目標(biāo)主機(jī)上需要安裝python,docker,以及docker-compose工具。
Python 需要 2.7+. 需要注意的是,最好安裝對(duì)應(yīng)linux發(fā)型版本的python。
Docker engine 需要1.10+ 目前比較新的版本1.12. docker安裝
Docker Compose 需要 1.6.0+. Compose安裝
安裝步驟為以下幾個(gè)部分:
下載安裝包
修改相關(guān)配置 harbor.cfg;
運(yùn)行 install.sh去安裝和啟動(dòng)harbor;
點(diǎn)擊鏈接下載二進(jìn)制包 Harbor下載 . 選擇一個(gè)在線或者離線包進(jìn)行下載. 使用 tar 命令解壓下載的源碼包
在線包安裝:
$ tar xvf harbor-online-installer-.tgz
離線包安裝:
$ tar xvf harbor-offline-installer-.tgz
配置參數(shù)被放在文件 harbor.cfg中. 詳細(xì)參數(shù)講解 至少得配置 hostname參數(shù)
hostname: 配置目標(biāo)主機(jī)的主機(jī)名, 被用來(lái)訪問(wèn)Harbor ui 和鏡像倉(cāng)庫(kù)的,可以配置為ip地址和全域名,比如 192.168.1.10
or reg.yourdomain.com
. 不要使用 localhost
or 127.0.0.1
為主機(jī)名
ui_url_protocol: (httpor https. 默認(rèn)協(xié)議為 http) 該協(xié)議被用來(lái)訪問(wèn) the UI and the token/notification 服務(wù). 默認(rèn)是 http. 想要設(shè)置https協(xié)議,請(qǐng)看鏈接 配置Harbor支持https協(xié)議.
Email settings: 配置Harbor來(lái)發(fā)送郵件,當(dāng)然改配置并不是必須的 .注意:默認(rèn)的ssl鏈接沒(méi)有被啟用,如果SMTP需要ssl支持,可以設(shè)置以下參數(shù)以支持。
email_ssl = true
* email_server = smtp.mydomain.com * email_server_port = 25 * email_username = sample_admin@mydomain.com * email_password = abc * email_from = admin* email_ssl = false
harbor_admin_password: 設(shè)置管理員內(nèi)部密碼,該密碼緊緊在第一次啟動(dòng)Harbor的時(shí)候生效.在之后這個(gè)設(shè)置被忽略,管理員的密碼將在UI中重新設(shè)置。 默認(rèn)的用戶名和密碼如下: admin/Harbor12345.
auth_mode: 被用來(lái)認(rèn)證的方式,默認(rèn)使用的是 db_auth,該認(rèn)證會(huì)被肢解存儲(chǔ)到數(shù)據(jù)庫(kù)中。 如果需要設(shè)置LDAP方式認(rèn)證需要使用ldap_auth.
ldap_url: LDAP認(rèn)證方式的URL (e.g. ldaps://ldap.mydomain.com
). 當(dāng) auth_mode被設(shè)置為ldap_auth 的時(shí)候。
ldap_searchdn: 鏈接LDAP/AD服務(wù)的用戶域(e.g. uid=admin,ou=people,dc=mydomain,dc=com
).
ldap_search_pwd: 為上面設(shè)定的用戶域設(shè)置密碼 ldap_searchdn.
ldap_basedn: 基礎(chǔ)域?yàn)榉奖銓ふ乙粋€(gè)用戶e.g. ou=people,dc=mydomain,dc=com
. 僅當(dāng) auth_modeis 設(shè)置為ldap_auth的時(shí)候才使用
ldap_filter:用戶搜索過(guò)濾 (objectClass=person)
.
ldap_uid: 該參數(shù)被用來(lái)匹配一個(gè)LDAP搜索的用戶,可以使uid,cn,email或者其他的方式。
ldap_scope: 用戶搜索范圍, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE. Default is 3.
db_password: MySQL數(shù)據(jù)庫(kù)root用戶密碼 db_auth.
self_registration: (onor off. Default is on) 啟用和關(guān)閉用戶注冊(cè)功能.當(dāng)被關(guān)閉,新用戶職能通過(guò)admin用戶去創(chuàng)建。 _注意: 當(dāng) auth_mode被設(shè)置為 ldap_auth, self-registration 會(huì)被一直關(guān)閉,該參數(shù)也會(huì)被忽略。
use_compressed_js: (onor off. 默認(rèn)為 on) 生產(chǎn)中使用,建議將該參數(shù)設(shè)置為 on. 在部署模式中將參數(shù)設(shè)置為off以至于js 文件能夠被分開(kāi)去修改.
max_job_workers: (默認(rèn)為 3) 設(shè)置在任務(wù)服務(wù)中最大的工作副本, 每一個(gè)image副本任務(wù),會(huì)有一個(gè)worker從倉(cāng)庫(kù)中將所有的tag同步到遠(yuǎn)端。增大這個(gè)值回允許更多當(dāng)前的副本任務(wù),然而因?yàn)槊總€(gè)worker都會(huì)去消耗一定的網(wǎng)絡(luò)/cpu/io等資源,必須根據(jù)系統(tǒng)的資源進(jìn)行合理設(shè)置該值。
secret_key: 該值為加解密在副本策略中遠(yuǎn)端倉(cāng)庫(kù)的密碼,長(zhǎng)度為16位字符。生產(chǎn)中必需修改該值. NOTE: After changing this key, previously encrypted password of a policy can not be decrypted.
token_expiration: token過(guò)期時(shí)間,默認(rèn)30分鐘
verify_remote_cert: (onor off. 默認(rèn) on) 該參數(shù)決定了當(dāng)harbor盒遠(yuǎn)端的registry實(shí)例交互的時(shí)候是否使用SSL/TLS .設(shè)置為off 的時(shí)候,一般遠(yuǎn)端的registry會(huì)采用自簽名或者未受信任的證書(shū)。
customize_crt: (onor off. 默認(rèn)為on) 當(dāng)設(shè)置為on的時(shí)候,會(huì)使用腳本去創(chuàng)建私鑰和root證書(shū)去認(rèn)證registry的token
以下參數(shù):crt_country, crt_state, crt_location, crt_organization, crt_organizationalunit, crt_commonname, crt_email被用來(lái)省城key。設(shè)置為off的時(shí)候,key和root證書(shū)可以被應(yīng)用在外部的源中。為Harbor token服務(wù)自定義證書(shū)
默認(rèn),Harbor會(huì)存儲(chǔ)鏡像文件到本地文件系統(tǒng)。在生產(chǎn)環(huán)境中應(yīng)該考慮使用一些后端存儲(chǔ)去代替本地文件系統(tǒng),比如S3,openstack swift或者ceph等。可以在文件templates/registry/config.yml
去選擇更新存儲(chǔ)方式。比如你想使用Openstack Swift作為你的存儲(chǔ)后端,對(duì)應(yīng)的配置會(huì)如下:
storage: swift: username: admin password: ADMIN_PASS authurl: http://keystone_addr:35357/v3/auth tenant: admin domain: default region: regionOne container: docker_images
注意: 關(guān)于docker registry在存儲(chǔ)后端的詳細(xì)信息可以查看相應(yīng)鏈接 Registry 配置詳情 .
一旦 harbord.cfg和存儲(chǔ)后端被配置完成就可以使用install.sh
腳本進(jìn)行安裝和啟動(dòng)Harbor服務(wù)。 需要注意的是,執(zhí)行該操作可能會(huì)花費(fèi)一些,因?yàn)樾枰獜膁ocker hub上去下載一些Harbor相關(guān)依賴的images文件。
$ sudo ./install.sh
如果上面腳本執(zhí)行完成之后,一切工作正常,你就可以在瀏覽器上輸入配置文件harbor.cfg中配置的hostname并且使用配置的admin用戶來(lái)訪問(wèn)Harbor服務(wù)。 http://reg.yourdomain.com默認(rèn)的管理員用戶名密碼: username/password:admin/Harbor12345 .
使用admin用戶登錄進(jìn)去后首先創(chuàng)建一個(gè)項(xiàng)目,比如myproject
. 接下來(lái)用戶就可以使用docker login reg.yourdomain.com
登錄并進(jìn)行push鏡像。(默認(rèn)的registry服務(wù)監(jiān)聽(tīng)的80端口):
sh $ docker login reg.yourdomain.com $ docker push reg.yourdomain.com/myproject/myrepo:mytag
重要提示:默認(rèn)安裝的Harbor使用的是 HTTP 協(xié)議,因此,當(dāng)用戶在使用的時(shí)候,需要在docker daemon的配置文件中增加以下參數(shù) --insecure-registry reg.yourdomain.com
并且重啟docker.
更多使用Harbor的詳情信息,請(qǐng)點(diǎn)我**Harbor使用指南** .
Harbor不會(huì)使用任何認(rèn)證進(jìn)行運(yùn)行,默認(rèn)使用http來(lái)提供服務(wù)。這種方式對(duì)于部署或者測(cè)試環(huán)境會(huì)相應(yīng)的簡(jiǎn)單一些,但是在生產(chǎn)環(huán)境中不建議那樣做。為了啟用HTTPS的支持,請(qǐng)看下面的鏈接 配置Harbor以支持https.
你可以使用docker-compose去管理Harbor的整個(gè)生命周期。以下是相應(yīng)的管理命令,需要注意的是docker-compose必須得在有docker-compose.yml文件的目錄下執(zhí)行:
停止Harbor服務(wù):
$ sudo docker-compose stop Stopping harbor_proxy_1 ... done Stopping harbor_ui_1 ... done Stopping harbor_registry_1 ... done Stopping harbor_mysql_1 ... done Stopping harbor_log_1 ... done Stopping harbor_jobservice_1 ... done
啟動(dòng)Harbor服務(wù):
$ sudo docker-compose start Starting harbor_log_1 Starting harbor_mysql_1 Starting harbor_registry_1 Starting harbor_ui_1 Starting harbor_proxy_1 Starting harbor_jobservice_1
如果需要修改Harbor的配置,首先需要停掉正在運(yùn)行的 Harbor實(shí)例,更新harbor.cfg文件,再次運(yùn)行install.sh
$ sudo docker-compose down $ vim harbor.cfg $ sudo install.sh
刪除Harbor容器,保存鏡像文件和Harbor的數(shù)據(jù)庫(kù)文件:
$ sudo docker-compose rm Going to remove harbor_proxy_1, harbor_ui_1, harbor_registry_1, harbor_mysql_1, harbor_log_1, harbor_jobservice_1 Are you sure? [yN] y Removing harbor_proxy_1 ... done Removing harbor_ui_1 ... done Removing harbor_registry_1 ... done Removing harbor_mysql_1 ... done Removing harbor_log_1 ... done Removing harbor_jobservice_1 ... done
刪除Harbor的數(shù)據(jù)庫(kù)信息和鏡像文件(一般為了純凈安裝):
$ rm -r /data/database $ rm -r /data/registry
更多docker-compose命令使用指南
默認(rèn)情況下,regirstry的數(shù)據(jù)被持久化到目標(biāo)主機(jī)的/data/
目錄。當(dāng)Harbor的容器唄刪除或者重新創(chuàng)建的時(shí)候,數(shù)據(jù)不會(huì)有任何改變。 另外,Harbor使用rsyslog去收集每個(gè)容器的日志,默認(rèn)的,政協(xié)日志文件被存儲(chǔ)在目標(biāo)主機(jī)的/var/log/harbor/
目錄以便進(jìn)行troubleshooting
默認(rèn)情況下,Harbor監(jiān)聽(tīng)80和443(需要配置)來(lái)作為admin用戶登錄的入口,當(dāng)然也可以自定義該端口。
1.修改 docker-compose.yml 文件 替換ui中的端口映射, e.g. 8888:80.
proxy: image: library/nginx:1.11.5 restart: always volumes: - ./config/nginx:/etc/nginx ports: - 8888:80 - 443:443 depends_on: - mysql - registry - ui - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "proxy"
2.修改模版文件 templates/registry/config.yml
, 在參數(shù) "$ui_url"之后增加自定義端口":8888".
auth: token: issuer: registry-token-issuer realm: $ui_url:8888/service/token rootcertbundle: /etc/registry/root.crt service: token-service
3.運(yùn)行install.sh更新并啟動(dòng)harbor.
$ sudo docker-compose down $ sudo install.sh
1.啟用Https協(xié)議指南 guide.
2.修改 docker-compose.yml配置文件
修改compose文件中的443端口映射,比如: 4443:443.
proxy: image: library/nginx:1.11.5 restart: always volumes: - ./config/nginx:/etc/nginx ports: - 80:80 - 4443:443 depends_on: - mysql - registry - ui - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "proxy"
3.修改模版文件 templates/registry/config.yml
在"$ui_url"之后增加自定義端口,比如":4443"
auth: token: issuer: registry-token-issuer realm: $ui_url:4443/service/token rootcertbundle: /etc/registry/root.crt service: token-service
4.運(yùn)行 install.sh 更新啟動(dòng) Harbor.
$ sudo docker-compose down $ sudo install.sh
當(dāng)harbor不正常工作的時(shí)候,可以使用一下命令查看正在運(yùn)行的容器信息:
$ sudo docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------------- harbor_jobservice_1 /harbor/harbor_jobservice Up harbor_log_1 /bin/sh -c crond && rsyslo ... Up 0.0.0.0:1514->514/tcp harbor_mysql_1 /entrypoint.sh mysqld Up 3306/tcp harbor_proxy_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp harbor_registry_1 /entrypoint.sh serve /etc/ ... Up 5000/tcp harbor_ui_1 /harbor/harbor_ui Up
如果有容器處于非up狀態(tài),可以檢查容器日志/var/log/harbor
2.對(duì)harbor進(jìn)行彈性負(fù)載均衡nginx反響代理的時(shí)候可以查看以下文件,make/config/nginx/nginx.conf
中的相關(guān)配置 location /
, location /v2/
location /service/
.
proxy_set_header X-Forwarded-Proto $scheme;
感謝各位的閱讀,以上就是“Harbo如何使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Harbo如何使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!