您好,登錄后才能下訂單哦!
這篇文章主要講解了“基于Harbor如何搭建Docker私有鏡像倉(cāng)庫(kù)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“基于Harbor如何搭建Docker私有鏡像倉(cāng)庫(kù)”吧!
什么是 harbor?
第一次使用這個(gè)的時(shí)候是剛進(jìn)公司處理的第一個(gè)任務(wù)的時(shí)候,發(fā)現(xiàn) harbor 就是一個(gè)用于存儲(chǔ)和分發(fā) docker 鏡像的企業(yè)級(jí)registry 服務(wù)器。
網(wǎng)上找到一個(gè) harbor 的架構(gòu)圖:
harbor 是 vmware 公司開(kāi)源的企業(yè)級(jí) dockerregistry 項(xiàng)目,項(xiàng)目地址為 https://github.com/vmware/harbor。其目標(biāo)是幫助用戶(hù)迅速搭建一個(gè)企業(yè)級(jí)的 docker registry 服務(wù)。它以 docker 公司開(kāi)源的 registry 為基礎(chǔ),提供了管理ui,基于角色的訪問(wèn)控制(role based access control),ad/ldap集成、以及審計(jì)日志(auditlogging) 等企業(yè)用戶(hù)需求的功能,同時(shí)還原生支持中文。harbor 的每個(gè)組件都是以 docker 容器的形式構(gòu)建的,使用 docker compose 來(lái)對(duì)它進(jìn)行部署。
環(huán)境準(zhǔn)備
1、自己在騰訊云買(mǎi)的服務(wù)器(centos7.3)
2、docker 版本:17.05.0-ce
3、docker-compose:1.17.1
4、harbor:1.1.2
安裝 docker
因?yàn)橄到y(tǒng)是 centos 7.3 ,內(nèi)核啥的都已經(jīng)是 3.10,所以不用擔(dān)心內(nèi)核升級(jí)的問(wèn)題,一些操作啥的在 7.x 上操作也很方便。
yum update //系統(tǒng)版本更新 vim /etc/yum.repos.d/docker.repo //添加以下內(nèi)容 [dockerrepo] name=docker repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg //下面安裝 docker 引擎 yum install docker-engine -y //安裝docker引擎,此步也可作為更新docker版本的操作:先#systemctl stop docker 停止docker服務(wù),再#yum install docker-engine 更新docker版本 systemctl enable docker.service systemctl start docker //啟動(dòng)docker守護(hù)進(jìn)程 docker info //查看docker運(yùn)行情況 docker -v //查看版本信息
修改 docker 配置文件 /etc/default/docker 如下:
復(fù)制代碼 代碼如下:
docker_opts="--registry-mirror=http://aad0405c.m.daocloud.io" //換成國(guó)內(nèi)的鏡像加速源,不然拉取鏡像簡(jiǎn)直龜速,不想在吐槽了
使用 service docker restart
重啟 docker 服務(wù)即可。
或者用官方提供的方式:
復(fù)制代碼 代碼如下:
curl -ssl | sh -s ]
安裝 docker-compose
如果是想直接命令安裝也行,
下載指定版本的docker-compose
[code]
sudo curl -l -s`-`uname -m` -o /usr/local/bin/docker-compose
對(duì)二進(jìn)制文件賦可執(zhí)行權(quán)限
chmod +x /usr/local/bin/docker-compose
測(cè)試下docker-compose是否安裝成功
docker-compose --version
出現(xiàn)如下
docker-compose version 1.17.1, build 6d101fb
但是,這種方法簡(jiǎn)直龜速,幸好還有種方法,
見(jiàn)這里:
這種需要通過(guò) python 的 pip 安裝
安裝 pip
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz tar -vxf setuptools-1.4.2.tar.gz cd setuptools-1.4.2 python2.7 setup.py install //因?yàn)榉?wù)器自帶 python 2.7 easy_install-2.7 pip
安裝 docker compose
pip install docker-compose docker-compose --version //測(cè)試安裝是否成功
安裝 harbor
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz #離線安裝包,也是龜速,把這個(gè)下載鏈接用迅雷下載,速度卻賊快,嘿嘿,然后再傳到服務(wù)器上去,整個(gè)過(guò)程快很多! tar -zxvf harbor-offline-installer-v1.1.2.tgz
解壓縮之后,進(jìn)入目錄下會(huì)看到 harbor.cfg 文件,該文件就是 harbor 的配置文件。
## configuration file of harbor # hostname設(shè)置訪問(wèn)地址,可以使用ip、域名,不可以設(shè)置為127.0.0.1或localhost hostname = 115.159.227.249 #這里我先配置我的服務(wù)器ip地址 # 訪問(wèn)協(xié)議,默認(rèn)是http,也可以設(shè)置https,如果設(shè)置https,則nginx ssl需要設(shè)置on ui_url_protocol = http # mysql數(shù)據(jù)庫(kù)root用戶(hù)默認(rèn)密碼root123,實(shí)際使用時(shí)修改下 db_password = root123 #maximum number of job workers in job service max_job_workers = 3 #determine whether or not to generate certificate for the registry's token. #if the value is on, the prepare script creates new root cert and private key #for generating token to access the registry. if the value is off the default key/cert will be used. #this flag also controls the creation of the notary signer's cert. customize_crt = on #the path of cert and key files for nginx, they are applied only the protocol is set to https ssl_cert = /data/cert/server.crt ssl_cert_key = /data/cert/server.key #the path of secretkey storage secretkey_path = /data #admiral's url, comment this attribute, or set its value to na when harbor is standalone admiral_url = na #notes: the properties between begin initial properties and end initial properties #only take effect in the first boot, the subsequent changes of these properties #should be performed on web ui #************************begin initial properties************************ #email account settings for sending out password resetting emails. #email server uses the given username and password to authenticate on tls connections to host and act as identity. #identity left blank to act as username. 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 ##the initial password of harbor admin, only works for the first time when harbor starts. #it has no effect after the first launch of harbor. # 啟動(dòng)harbor后,管理員ui登錄的密碼,默認(rèn)是harbor12345 harbor_admin_password = harbor12345 # 認(rèn)證方式,這里支持多種認(rèn)證方式,如ladp、本次存儲(chǔ)、數(shù)據(jù)庫(kù)認(rèn)證。默認(rèn)是db_auth,mysql數(shù)據(jù)庫(kù)認(rèn)證 auth_mode = db_auth #the url for an ldap endpoint. ldap_url = ldaps://ldap.mydomain.com #a user's dn who has the permission to search the ldap/ad server. #if your ldap/ad server does not support anonymous search, you should configure this dn and ldap_search_pwd. #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com #the password of the ldap_searchdn #ldap_search_pwd = password #the base dn from which to look up a user in ldap/ad ldap_basedn = ou=people,dc=mydomain,dc=com #search filter for ldap/ad, make sure the syntax of the filter is correct. #ldap_filter = (objectclass=person) # the attribute used in a search to match a user, it could be uid, cn, email, samaccountname or other attributes de pending on your ldap/ad ldap_uid = uid #the scope to search for users, 1-ldap_scope_base, 2-ldap_scope_onelevel, 3-ldap_scope_subtree ldap_scope = 3 #timeout (in seconds) when connecting to an ldap server. the default value (and most reasonable) is 5 seconds. ldap_timeout = 5 # 是否開(kāi)啟自注冊(cè) self_registration = on # token有效時(shí)間,默認(rèn)30分鐘 token_expiration = 30 # 用戶(hù)創(chuàng)建項(xiàng)目權(quán)限控制,默認(rèn)是everyone(所有人),也可以設(shè)置為adminonly(只能管理員) project_creation_restriction = everyone #determine whether the job service should verify the ssl cert when it connects to a remote registry. #set this flag to off when the remote registry uses a self-signed or untrusted certificate. verify_remote_cert = on #************************end initial properties************************
啟動(dòng) harbor,修改完配置文件后,在的當(dāng)前目錄執(zhí)行./install.sh
,harbor服務(wù)就會(huì)根據(jù)當(dāng)期目錄下的docker-compose.yml
開(kāi)始下載依賴(lài)的鏡像,檢測(cè)并按照順序依次啟動(dòng)各個(gè)服務(wù)。
啟動(dòng)完成后,我們?cè)L問(wèn)剛設(shè)置的 hostname 即可,http://115.159.227.249/,默認(rèn)是80端口,如果端口占用,我們可以去修改docker-compose.yml文件中,對(duì)應(yīng)服務(wù)的端口映射。
登錄 web harbor , 輸入用戶(hù)名 admin,默認(rèn)密碼(或已修改密碼)登錄系統(tǒng)。
我們可以看到系統(tǒng)各個(gè)模塊如下:
項(xiàng)目:新增/刪除項(xiàng)目,查看鏡像倉(cāng)庫(kù),給項(xiàng)目添加成員、查看操作日志、復(fù)制項(xiàng)目等
日志:倉(cāng)庫(kù)各個(gè)鏡像create、push、pull等操作日志
系統(tǒng)管理
用戶(hù)管理:新增/刪除用戶(hù)、設(shè)置管理員等
復(fù)制管理:新增/刪除從庫(kù)目標(biāo)、新建/刪除/啟停復(fù)制規(guī)則等
配置管理:認(rèn)證模式、復(fù)制、郵箱設(shè)置、系統(tǒng)設(shè)置等
其他設(shè)置
用戶(hù)設(shè)置:修改用戶(hù)名、郵箱、名稱(chēng)信息
修改密碼:修改用戶(hù)密碼
注意:非系統(tǒng)管理員用戶(hù)登錄,只能看到有權(quán)限的項(xiàng)目和日志,其他模塊不可見(jiàn)。
我們要嘗試下能不能把自己 docker 里面的鏡像 push 到 harbor 的 library 里來(lái)(默認(rèn)這個(gè) library 項(xiàng)目是公開(kāi)的,所有人都可以有讀的權(quán)限,都不需要 docker login 進(jìn)來(lái),就可以拉取里面的鏡像)。
注意:
為了后面留坑,我這里先 在自己的 docker.service 中添加倉(cāng)庫(kù):(這是個(gè)坑,建議你先按照我說(shuō)的做,不然下面可能會(huì)一直登錄不上)
vim /usr/lib/systemd/system/docker.service #里面的這行修改為:(其實(shí)就是添加 --insecure-registry 115.159.227.249 ) execstart=/usr/bin/dockerd --insecure-registry 115.159.227.249
添加完了后重新啟動(dòng) docker:
systemctl daemon-reload && systemctl enable docker && systemctl start docker
啟動(dòng) docker 服務(wù):
service docker start
登錄:(為了測(cè)試下能否登錄成功)
admin登錄 $ docker login 115.159.227.249 username: admin password: login succeeded
打 tag 并 push
docker tag ubuntu:15.10 115.159.227.249/library/ubuntu:15.10 //給我的鏡像打個(gè) tag docker push 115.159.227.249/library/ubuntu the push refers to a repository [115.159.227.249/library/ubuntu] 98d59071f692: pushed af288f00b8a7: pushed 4b955941a4d0: pushed f121afdbbd5d: pushed 15.10: digest: sha256:ec89c4a90f45f5e103860191890f48d8379e0504a2881ff706aef0768dc0321b size: 1150
上傳完畢后,登錄web harbor,選擇項(xiàng)目 library,就可以看到我剛 push 的鏡像了。
感謝各位的閱讀,以上就是“基于Harbor如何搭建Docker私有鏡像倉(cāng)庫(kù)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)基于Harbor如何搭建Docker私有鏡像倉(cāng)庫(kù)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(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)容。