私有鏡像庫構(gòu)建攻略-創(chuàng)新互聯(lián)

上篇文檔中,我已經(jīng)詳細(xì)介紹了如何快速簡單的部署Rancher Server,啟用Github認(rèn)證以及數(shù)據(jù)保持方便后續(xù)的升級操作。在這篇文檔中,我將梳理下如何創(chuàng)建一個有密碼保護(hù)的私有Docker Registry以及如何和Rancher整合。我們將下載一個容器鏡像,為其設(shè)置標(biāo)簽并推送至此Registry。最后,我們將通過Rancher Server部署此容器鏡像。

創(chuàng)新互聯(lián)建站成立與2013年,先為思茅等服務(wù)建站,思茅等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為思茅企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

雖然我建議大家使用AWS S3,但是我在此將使用registry:2,把所有的數(shù)據(jù)存放在主機(jī)本地。

我們需要提前準(zhǔn)備如下工作:

  • 域名所對應(yīng)的證書,我將使用regv2.piel.io

  • 一個兼容.htaccess的密碼

我將通過letsencrypt.org以及一個Docker腳本來快速創(chuàng)建第一個證書。

  • 復(fù)制 git@github.com:fatk/docker-letsencrypt-nginx-proxy-companion-examples.git

  • 修改docker-letsencrypt-nginx-proxy-companion-examples/dockerdocker-run/simple-site/docker-run.sh,將site.example.com修改為你將使用的域名

  • 運(yùn)行腳本

$ git clone git@github.com:fatk/docker-letsencrypt-nginx-proxy-companion-examples.git
$ cd docker-letsencrypt-nginx-proxy-companion-examples
# Modify the script and replace site.example.com 
$ vi dockerdocker-run/simple-site/docker-run.sh
$ ./docker-run.sh

腳本運(yùn)行后,將啟動一個nginx實(shí)例,一個docker-gen實(shí)例,一個letsencrypt-nginx-proxy-companion實(shí)例以及最終的nginx實(shí)例。

我們來看下腳本運(yùn)行成功后有哪些容器啟動了:

私有鏡像庫構(gòu)建攻略

看上去已經(jīng)成功了,但是我們剛剛創(chuàng)建的證書在哪兒?

$ ls volumes/proxy/certs
dhparam.pem  regv2.piel.io  regv2.piel.io.crt  regv2.piel.io.dhparam.pem  regv2.piel.io.key

以及:

$ ls volumes/proxy/certs/regv2.piel.io
account_key.json  cert.pem  fullchain.pem  key.pem

很好,接下來我們可以將regv2.piel.io.key以及fullchain.pem用于容器registry:2.

下面我們創(chuàng)建registry可以訪問到的證書目錄

$ mkdir -p /data/docker-registry-certs
$ cp volumes/proxy/certs/regv2.piel.io.key /data/docker-registry-certs/
$ cp volumes/proxy/certs/regv2.piel.io/fullchain.pem /data/docker-registry-certs/
$ mkdir /data/docker-registry-auth
$ mkdir /data/docker-registry

最后一步,創(chuàng)建訪問registry的用戶名和密碼,此為訪問docker registry:2的最低安全措施配置。

$ docker run --entrypoint htpasswd registry:2 -Bbn pieltestuser \
"mkakogalb47" > /data/docker-registry-auth/htpasswd

該命令要求主機(jī)上已經(jīng)存在registry:2 鏡像,所以在運(yùn)行htpasswd命令前它會自動下載此鏡像。之后,此容器會自動停止。

檢查下htpasswd是否已經(jīng)被創(chuàng)建:

$ cat /data/docker-registry-auth/htpasswd
pieltestuser:$2y$05$w3IqOzTdsDbot9ls1JpeTeHYr/2vv.PTx3dObRvT.JkfGaygfTkJy

最后,運(yùn)行registry:2

$ docker run -d -p 5000:5000 --restart=always --name docker-registry \
  -v /data/docker-registry:/var/lib/registry \
  -v /data/docker-registry-auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  -v /data/docker-registry-certs:/certs \
  -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem" \
  -e "REGISTRY_HTTP_TLS_KEY=/certs/regv2.piel.io.key" \
  registry:2
 
$ docker run -d -p 5000:5000 --restart=always --name docker-registry \
  -v /data/docker-registry:/var/lib/registry \
  -v /data/docker-registry-auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  -v /data/docker-registry-certs:/certs \
  -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem" \
  -e "REGISTRY_HTTP_TLS_KEY=/certs/regv2.piel.io.key" registry:2

我們試一下是否可以登陸:

$ docker login -u pieltestuser -p "mkakogalb47" -e wayne@wayneconnolly.com regv2.piel.io:5000
$ docker login -u pieltestuser -p "mkakogalb47" -e wayne@wayneconnolly.com regv2.piel.io:5000
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

接下來我們試下是否可以下載、標(biāo)記、上傳容器鏡像至我們的新鏡像倉庫。例如,下載一個jenkins https://hub.docker.com/_/jenkins/

$ docker pull jenkins$ docker tag jenkins:latest regv2.piel.io:5000/piel-jenkins:latest

驗(yàn)證下是否可用

私有鏡像庫構(gòu)建攻略

很好,上傳到我們的鏡像倉庫。

$ docker push regv2.piel.io:5000/piel-jenkins:latest

直到寫這篇文章的時(shí)候,除了用Curl,還沒有很好的方法可以直接看到鏡像庫中的鏡像列表

$ curl -u pieltestuser:mkakogalb47 https://regv2.piel.io:5000/v2/_catalog
{"repositories":["piel-jenkins"]}

可以通過JSON看到我們的新Jenkins鏡像在我們的私有鏡像庫中

現(xiàn)在可以在我們的Rancher-test.piel.io環(huán)境中應(yīng)用我們的registry了。

登陸Rancher,在基礎(chǔ)架構(gòu) > 主機(jī)中點(diǎn)擊添加主機(jī)。

將自動生成的命令在Rancher Host上運(yùn)行。

$ sudo docker run -e CATTLE_AGENT_IP='45.32.190.15'  \
  -d --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/rancher:/var/lib/rancher \
  rancher/agent:v1.0.1 http://rancher-test.piel.io/v1/scripts/FF42DCE27F7C88BD7733:1461042000000:ryU0BaXJFo6c9zuHgeULdAtbCE

$ sudo docker run -d --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/rancher:/var/lib/rancher \ 
  rancher/agent:v0.11.0http://rancher.piel.io/v1/scripts/BE455B92EA48EA1C1F12:1461042000000:mi433ChYRN9nfQSwB2FIlBnpPk

一兩分鐘后主機(jī)將在Rancher管理界面中出現(xiàn)。由于我還沒有配置主機(jī)信息,主機(jī)顯示名稱依然為“vultr.guest”, 我們可以通過菜單修改主機(jī)名稱并添加標(biāo)簽。

私有鏡像庫構(gòu)建攻略

接下來,我們添加私有registry并在新增加的主機(jī)上部署Jenkins。

在基礎(chǔ)架構(gòu)菜單 > 鏡像庫中點(diǎn)擊“添加鏡像庫”,并選擇自定義,添加相應(yīng)的信息完成配置。

幾分鐘之后,Rancher server的私有鏡像倉庫就可以使用了。

私有鏡像庫構(gòu)建攻略私有鏡像庫構(gòu)建攻略

下面讓我們部署Jenkins容器。在基礎(chǔ)架構(gòu) >  容器菜單中,點(diǎn)擊“添加容器”

填寫所需信息,在選擇p_w_picpath一處輸入regv2.piel.io:5000/piel-jenkins: latest并設(shè)置端口映射為Jenkins 8080到主機(jī)的80端口。

私有鏡像庫構(gòu)建攻略

此處將需要一點(diǎn)時(shí)間下載鏡像。

下面我們將看到我們又一個容器叫做“my-jenkins”已經(jīng)啟動了。

私有鏡像庫構(gòu)建攻略

訪問到Jenkins URL,http://regv2.piel.io。

私有鏡像庫構(gòu)建攻略

通過docker ps再確認(rèn)一次:

私有鏡像庫構(gòu)建攻略

成功!我們現(xiàn)在已經(jīng)完成了:

創(chuàng)建并加密了我們自己的私有鏡像庫

添加并標(biāo)記了一個容器鏡像

為Rancher Server添加了一個主機(jī)

為Rancher Server增加了一個私有鏡像庫

在主機(jī)上部署了一個Jenkins容器

確認(rèn)容器已經(jīng)部署成功

注意:在本教程中使用的服務(wù)器現(xiàn)在已經(jīng)退役啦。

原文來源:Rancher Labs

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞標(biāo)題:私有鏡像庫構(gòu)建攻略-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://muchs.cn/article16/hiedg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、全網(wǎng)營銷推廣做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)建站虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)