【Harbor】用Harbor搭建docker 私有鏡像倉庫

一、 實驗背景

docker中要使用鏡像,一般會從本地、docker Hup公共倉庫和其它第三方公共倉庫中下載鏡像躏仇,一般出于安全和外網(wǎng)(墻)資源下載速率的原因考慮企業(yè)級上不會輕易使用。

那么有沒有一種辦法可以存儲自己的鏡像又有安全認證的倉庫呢??

?企業(yè)級環(huán)境中基于Harbor搭建自己的安全認證倉庫腺办。

Harbor是VMware公司最近開源的企業(yè)級Docker Registry項目, 其目標(biāo)是幫助用戶迅速搭建一個企業(yè)級的Docker registry服務(wù)焰手。

*提供了管理UI

*基于角色的訪問控制(Role Based Access Control)

*AD/LDAP集成

*審計日志(Audit logging)

*原生支持中文

二、 相關(guān)介紹

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

*Proxy:Harbor的registry, UI, token等服務(wù)怀喉,通過一個前置的反向代理統(tǒng)一接收瀏覽器书妻、Docker客戶端的請求,并將請求轉(zhuǎn)發(fā)給后端不同的服務(wù)躬拢。

*Registry: 負責(zé)儲存Docker鏡像躲履,并處理docker push/pull 命令。由于我們要對用戶進行訪問控制聊闯,即不同用戶對Docker image有不同的讀寫權(quán)限工猜,Registry會指向一個token服務(wù),強制用戶的每次docker pull/push請求都要攜帶一個合法的token, Registry會通過公鑰對token 進行解密驗證菱蔬。

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

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

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

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

*Database:為core services提供數(shù)據(jù)庫服務(wù)宙枷,負責(zé)儲存用戶權(quán)限、審計日志茧跋、Docker image分組信息等數(shù)據(jù)慰丛。

*Log collector:為了幫助監(jiān)控Harbor運行,負責(zé)收集其他組件的log瘾杭,供日后進行分析诅病。

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

Harbor的每個組件都是以Docker容器的形式構(gòu)建的,所以使用Docker Compose來對它進行部署粥烁。

用于部署Harbor的Docker Compose 模板位于 /Deployer/docker-compose.yml. 打開這個模板文件贤笆,會發(fā)現(xiàn)Harbor由5個容器組成:

*proxy: 由Nginx 服務(wù)器構(gòu)成的反向代理。

*registry:由Docker官方的開源registry 鏡像構(gòu)成的容器實例讨阻。

*ui: 即架構(gòu)中的core services, 構(gòu)成此容器的代碼是Harbor項目的主體芥永。

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

*log: 運行著rsyslogd的容器钝吮,通過log-driver的形式收集其他容器的日志埋涧。

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

Harbor的認證流程

A巧鸭、首先,請求被代理容器監(jiān)聽攔截麻捻,并跳轉(zhuǎn)到指定的認證服務(wù)器纲仍。

B、如果認證服務(wù)器配置了權(quán)限認證贸毕,則會返回401郑叠。通知dockerclient在特定的請求中需要帶上一個合法的token。而認證的邏輯地址則指向架構(gòu)圖中的core services明棍。

C乡革、 當(dāng)docker client接受到錯誤code。client就會發(fā)送認證請求(帶有用戶名和密碼)到coreservices進行basic auth認證。

D沸版、 當(dāng)C的請求發(fā)送給ngnix以后嘁傀,ngnix會根據(jù)配置的認證地址將帶有用戶名和密碼的請求發(fā)送到core serivces。

E视粮、 coreservices獲取用戶名和密碼以后對用戶信息進行認證(自己的數(shù)據(jù)庫或者介入LDAP都可以)细办。成功以后,返回認證成功的信息蕾殴。

Harbor的安裝方式

*在線online安裝 ?--> 由于國內(nèi)墻和網(wǎng)速率的原因笑撞,體驗不好

*離線offline安裝 ?--> 下載包較大 [ 包含了相關(guān)依賴鏡像 ],從官網(wǎng)下載效果不理想


三钓觉、實驗準(zhǔn)備

操作系統(tǒng): CentOS7.3 Minimal

HarborServer:192.168.1.102

Client(docker):192.168.1.109


harbor-offline-installer-v1.1.1.tgz

百度云:https://pan.baidu.com/s/1o7LC2d8


Harbor 主機

IP:192.168.1.102

Hostname:www.michael.com

# cat /etc/hosts

192.168.1.102 www.michael.com


docker主機(用來實驗向Harbor registry拉取和推送鏡像

IP:192.168.1.109



四茴肥、搭建CA,創(chuàng)建相關(guān)證書

在Harbor 主機:


1.搭建CA荡灾,實現(xiàn)加密傳輸

安裝openssl相關(guān)包

# yum?-y?install pcre pcre-devel zlib-devel openssl openssl-devel


2.創(chuàng)建證書

創(chuàng)建證書存放目錄

# mkdir -p /data/cert

# cd /data/cert/


3.創(chuàng)建 CA 根證書

#openssl req? -newkey rsa:4096 \

> -nodes -sha256 -keyout ca.key -x509 -days 365 \

> -out ca.crt -subj "/C=CN/L=Shenzhen/O=Harbor/CN=www.harbor.com"

# ?ls

ca.crt ? ?ca.key


4.生成證書簽名, 設(shè)置訪問域名為 www.michael.com

openssl req -newkey rsa:4096 \

> -nodes -sha256 -keyout www.michael.com.key \

> -out www.michael.com.csr -subj "/C=CN/L=Shenzhen/O=XXX/CN=www.michael.com"

# ls

ca.crt? ca.key?www.michael.com.csr? www.michael.com.key


5.生成主機的證書

# openssl x509 -req -days 365 -in www.michael.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.michael.com.crt

Signature ok

subject=/C=CN/L=Shenzhen/O=XXX/CN=www.michael.com

Getting CA Private Key

# ls

ca.crt??

ca.key??

ca.srl?

www.michael.com.crt

www.michael.com.key

www.michael.com.csr??



五瓤狐、Harbor安裝部署

在Harbor 主機:


1.安裝docker?

# yum ?-y install docker?

# systemctl start ?docker.service

# systemctl enable docker.service


2.安裝 docker-compose

# ?yum -y ?install python-setuptools

# easy_install pip?

# ?pip?install?docker-compose

# ?pip?install backports.ssl_match_hostname


3.將 harbor-offline-installer-v1.1.1.tgz 上傳至 /root

# tar zxf? harbor-offline-installer-v1.1.1.tgz

# cd harbor


4.修改habor配置文件 ? harbor.cfg?

# vim? harbor.cfg

hostname= www.michael.com ? ? ? # 指定私有倉庫的主機名,可以是IP地址,也可以是域名

ui_url_protocol?=?https ? ? ? ? ? ? ? ? ? #?用戶訪問私倉時使用的協(xié)議卧晓,默認時http芬首,配置成https

db_password?=?root123 ? ? ? ? ? ? ? ? #?指定mysql數(shù)據(jù)庫管理員密碼

harbor_admin_password:Harbor12345 ? ? ? ? ? ? ?#?harbor的管理員賬戶密碼

ssl_cert?=/data/cert/www.michael.com.crt ? ? ? ? ? ? ?#?設(shè)置證書文件路徑

ssl_cert_key?=/data/cert/www.michael.com.key ? ? ?#?設(shè)置證書密鑰文件路徑


5.執(zhí)行自帶腳本一鍵安裝

# ./install.sh

6.WEB訪問

https://192.168.1.102

https://www.michael.com

默認用戶名:admin

默認密碼:Harbor12345?

?[可通過安裝前 harbor.cfg 配置文件修改?harbor_admin_password?指定 ]

*通過 admin 賬戶登陸創(chuàng)建 test 用戶?

*退出 admin 賬戶登陸 test 用戶

*創(chuàng)建 test 項目, 訪問級別選擇公開


六、客戶端(docker機)測試

在 docker機:


1.安裝docker

# yum -y isntall docker


2.創(chuàng)建倉庫證書存放目錄

# mkdir /etc/docker/certs.d/www.michael.com


3.從harbor服務(wù)器獲取證書至倉庫證書目錄

# scp root@192.168.1.102:/data/cert/ca.crt /etc/docker/certs.d/www.michael.com/ca.crt

# update-ca-trust

# systemctl restart docker


4.添加 192.168.1.102(www.michael.com)域名解析

# vim ? /etc/hosts

192.168.1.102 www.michael.com


5. 用戶登陸

# docker login? www.michael.com? -u admin ?-p? "XXX"

# docker login ?www.michael.com ?-u test ? ? ?-p ? "XXX"

# docker pull ubuntu:14.04

# docker tag ubuntu:17.04? www.michael.com/test/ubuntu:17.04

# docker push www.michael.com/test/ubuntu:17.04

關(guān)于倉庫逼裆、用戶的 push 和pull權(quán)限控制郁稍,請上官網(wǎng)查看相關(guān)教程


七、關(guān)于停止和啟動 Harbor(修改配置文件需重啟)

在 Harbor 機:

# docker-compose? -f? /root/harbor/docker-compose.yml ?down

# ?docker-compose? -f? /root/harbor/docker-compose.yml ?up ?-d


八胜宇、參考

企業(yè)級Registry開源項目Harbor

http://dockone.io/article/1179;

http://www.cnblogs.com/jicki/p/5737369.html

http://www.jiagoumi.com/work/1221.html

Docker實踐:使用Harbor搭建Docker私有倉庫

http://www.jiagoumi.com/work/1221.html

http://www.jiagoumi.com/category/work

企業(yè)級Docker Registry開源工具Harbor的介紹以及使用指南

https://my.oschina.net/xxbAndy/blog/786712

Docker Harbor registry(http)私有倉庫搭建

http://lisea.blog.51cto.com/5491873/1934750

Docker Harbor registry(https)安全認證搭建

https://github.com/vmware/harbor

https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耀怜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子桐愉,更是在濱河造成了極大的恐慌财破,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件从诲,死亡現(xiàn)場離奇詭異左痢,居然都是意外死亡,警方通過查閱死者的電腦和手機系洛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門俊性,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人描扯,你說我怎么就攤上這事定页。” “怎么了绽诚?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵典徊,是天一觀的道長杭煎。 經(jīng)常有香客問我,道長卒落,這世上最難降的妖魔是什么羡铲? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮导绷,結(jié)果婚禮上犀勒,老公的妹妹穿的比我還像新娘。我一直安慰自己妥曲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布钦购。 她就那樣靜靜地躺著檐盟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪押桃。 梳的紋絲不亂的頭發(fā)上葵萎,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音唱凯,去河邊找鬼羡忘。 笑死,一個胖子當(dāng)著我的面吹牛磕昼,可吹牛的內(nèi)容都是我干的卷雕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼票从,長吁一口氣:“原來是場噩夢啊……” “哼漫雕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起峰鄙,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤浸间,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吟榴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魁蒜,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年吩翻,在試婚紗的時候發(fā)現(xiàn)自己被綠了兜看。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡仿野,死狀恐怖铣减,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脚作,我是刑警寧澤葫哗,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布缔刹,位于F島的核電站,受9級特大地震影響劣针,放射性物質(zhì)發(fā)生泄漏校镐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一捺典、第九天 我趴在偏房一處隱蔽的房頂上張望鸟廓。 院中可真熱鬧,春花似錦襟己、人聲如沸引谜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽员咽。三九已至,卻和暖如春贮预,著一層夾襖步出監(jiān)牢的瞬間贝室,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工仿吞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滑频,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓唤冈,卻偏偏與公主長得像峡迷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子务傲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容