摘要:正好我們?cè)谑褂米鳛榈膫}(cāng)庫(kù),同時(shí)提供了等諸多類型的倉(cāng)庫(kù)功能。值得一提的是,我們可以使用這個(gè)倉(cāng)庫(kù)從和下載鏡像,但是我們不能通過這個(gè)倉(cāng)庫(kù)推送鏡像到遠(yuǎn)程倉(cāng)庫(kù)。
背景
我們一直使用 harbor 作為docker的鏡像倉(cāng)庫(kù),但Harbor只能作為私有倉(cāng)庫(kù),當(dāng)需要Docker Hub 或 Google Cloud Containers 上的鏡像時(shí),我們只能自己手動(dòng)pull,重新打tag,再push到harbor上。
當(dāng)需要拉取多個(gè)鏡像時(shí),這樣相當(dāng)麻煩,尤其是我們使用Kubespray來(lái)部署Kubernetes集群,僅僅準(zhǔn)備鏡像就需要花費(fèi)很多時(shí)間。
我們希望有一個(gè)Docker倉(cāng)庫(kù),能同時(shí)托管私有鏡像,還能代理訪問公共的鏡像倉(cāng)庫(kù)。
正好我們?cè)谑褂?b>Nexus作為Maven的倉(cāng)庫(kù),同時(shí)nexus3提供了Docker, yum, apt, npm, ruby gems, pypi 等諸多類型的倉(cāng)庫(kù)功能。
經(jīng)過技術(shù)調(diào)研,Nexus3完全可以達(dá)到我們的預(yù)期。
Nexus3 提供了的3種類型的Docker倉(cāng)庫(kù),前兩者都可以創(chuàng)建多個(gè)倉(cāng)庫(kù),最后一個(gè)則可以將他們?nèi)烤酆系揭粋€(gè)URL來(lái)訪問。
docker (hosted): 自托管
docker (proxy): 代理
docker (group): 聚合
配置Docker倉(cāng)庫(kù) 運(yùn)行一個(gè)nexus3服務(wù)器curl -SLO https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.12.1-01-unix.tar.gz tar -C /data/nexus3 -xf nexus-3.12.1-01-unix.tar.gz export RUN_AS_USER=root /data/nexus3/exus-3.12.1-01/bin/nexus start
默認(rèn)端口是8081, 用戶名/密碼:admin/admin123
登錄nexus3,點(diǎn)擊設(shè)置齒輪,并定位到左側(cè)的Repository:
創(chuàng)建一個(gè)hosted類型的docker倉(cāng)庫(kù)Hosted類型倉(cāng)庫(kù)用作我們的私有倉(cāng)庫(kù),替代harbor的功能。
創(chuàng)建專用的blob
為了倉(cāng)庫(kù)數(shù)據(jù)的獨(dú)立性和安全性,我們可以給每一個(gè)repository創(chuàng)建一個(gè)獨(dú)立的Blob塊存儲(chǔ)。
點(diǎn)擊 Repository下面的 Blob Stores - Create blob store:
Name:填寫一個(gè)易于辨認(rèn)的名字
Path:會(huì)自動(dòng)生成并補(bǔ)全。默認(rèn)在Nexus安裝目錄下面的sonatype-work/nexus3/blobs/下,也可以修改到其它目錄或磁盤,甚至可以是NFS或者cephfs的目錄。
創(chuàng)建hosted類型的私有倉(cāng)庫(kù)
點(diǎn)擊 Repository下面的 Repositories - Create repository - docker(hosted) :
Name: 輸入一個(gè)簡(jiǎn)潔直觀的名字
Online: 勾選。這個(gè)開關(guān)可以設(shè)置這個(gè)Docker repo是在線還是離線。
Repository Connectors
下面包含HTTP和HTTPS兩種類型的port。
有什么用呢?說(shuō)明講得很清楚:
連接器允許docker客戶端直接連接到docker倉(cāng)庫(kù),并實(shí)現(xiàn)一些請(qǐng)求操作,如docker pull, docker push, API查詢等。但這個(gè)連接器不是必需的,尤其是我們后面會(huì)用group類型的docker倉(cāng)庫(kù)來(lái)聚合它。
因此,這里我們不勾選并且不填寫端口,Nexus就不會(huì)啟動(dòng)一個(gè)監(jiān)聽到某個(gè)端口的連接器。
當(dāng)然,如果你希望直接訪問該倉(cāng)庫(kù),你可以填寫一個(gè)端口如:8090,然后在daemon.json中設(shè)置
"insecure-registries": [172.xx.xxx.xxx:8090"], 重啟docker后,通過如下命令訪問:
docker push 172.xx.xxx.xxx:8090/centos:7.5.1804
Force basic authentication
勾選。這樣的話就不允許匿名訪問了,執(zhí)行docker pull或 docker push之前,都要先登錄:docker login
Docker Registry API Support
Docker registry默認(rèn)使用的是API v2, 但是為了兼容性,我們可以勾選啟用API v1。
Storage
Blob store,我們下拉選擇前面創(chuàng)建好的專用blob:blob-docker-private
Hosted
開發(fā)環(huán)境,我們運(yùn)行重復(fù)發(fā)布,因此Delpoyment policy 我們選擇Allow redeploy。
截圖展示
創(chuàng)建一個(gè)proxy類型的docker倉(cāng)庫(kù)proxy類型倉(cāng)庫(kù),可以幫助我們?cè)L問不能直接到達(dá)的網(wǎng)絡(luò),如另一個(gè)私有倉(cāng)庫(kù),或者國(guó)外的公共倉(cāng)庫(kù),如Google cloud registry。
對(duì)于代理Docker hub, 官方有簡(jiǎn)要的文檔可以參考,就不再細(xì)寫,請(qǐng)參考Proxy Repository for Docker
下面以創(chuàng)建一個(gè)Google cloud registry的代理為例,簡(jiǎn)要寫一下如何創(chuàng)建proxy類型的docker倉(cāng)庫(kù)。
創(chuàng)建一個(gè)專用的blob
創(chuàng)建一個(gè)proxy類型的倉(cāng)庫(kù)
Name: proxy-google-containers
Repository Connectors: 不設(shè)置。
Proxy
Remote Storage: Google cloud registry的地址:https://gcr.io
配置docker hub的proxy時(shí),這里填寫: https://registry-1.docker.io
Docker Index: Use proxy registry(specified above)
配置docker hub的Docker Index時(shí),點(diǎn)選Use Docker Hub或者填寫:https://index.docker.io/
Storage: blob-google-containers
截圖
創(chuàng)建一個(gè)group類型的docker倉(cāng)庫(kù)group類型的docker倉(cāng)庫(kù),是一個(gè)聚合類型的倉(cāng)庫(kù)。它可以將前面我們創(chuàng)建的3個(gè)倉(cāng)庫(kù)聚合成一個(gè)URL對(duì)外提供服務(wù),可以屏蔽后端的差異性,實(shí)現(xiàn)類似透明代理的功能。
Group類型創(chuàng)建過程類似于上面的proxy類型。
名字比較簡(jiǎn)單:registry
啟用了一個(gè)監(jiān)聽在80端口的http連接器;
Storage:選擇專用的blob存儲(chǔ)blob-docker-group;
group : 將左邊可選的3個(gè)倉(cāng)庫(kù),添加到右邊的members下;
截圖
如何使用倉(cāng)庫(kù)配置代理服務(wù)器
根據(jù)我們上面配置,我們還無(wú)法直接使用倉(cāng)庫(kù),我們還得配置一個(gè)代理服務(wù)器。
在 Setting - System - HTTP 下,設(shè)置一個(gè)代理服務(wù)器。
代理服務(wù)器我們使用V2Ray搭建,這里不詳述。
使用倉(cāng)庫(kù)
根據(jù)以上配置,這個(gè)倉(cāng)庫(kù)就有一個(gè)可以使用的URL了,可以使用下面的命令直接pull上面push的鏡像:
docker pull 172.xx.xxx.xxx/centos:7.5.1804
以上行為會(huì)優(yōu)先從本地倉(cāng)庫(kù)(docker-private)查找,沒有再?gòu)拇韨}(cāng)庫(kù)(docker-hub 和 google-containers)查找。
我們?cè)賮?lái)pull一個(gè) google-containers的鏡像看看:
docker pull 172.xx.xxx.xxx/google-containers/kubernetes-dashboard-amd64:v1.8.3
當(dāng)然,因?yàn)槲覀兊膫}(cāng)庫(kù)禁用了匿名用戶訪問,你需要先登錄docker registry:
docker login 172.xx.xxx.xxx -u admin -p xxxxxxxxxx
成功了。
同理,我們可以拉取docker hub上的鏡像,只要把url中的域名,替換成我們自己的域名就可以了。
最后我們看下鏡像倉(cāng)庫(kù)的存儲(chǔ)結(jié)構(gòu):
可以看到,Docker Hub的官方倉(cāng)庫(kù)鏡像,被放到了libray 目錄下,GCR的則新建了一個(gè)google-containers 的目錄,而其他的用戶的鏡像,則會(huì)被放在用戶名同名的目錄下,目錄名與遠(yuǎn)程目錄一致。
值得一提的是,我們可以使用這個(gè)倉(cāng)庫(kù)從Docker Hub和 Google Cloud Registry下載鏡像,但是我們不能通過這個(gè)倉(cāng)庫(kù)推送鏡像到遠(yuǎn)程倉(cāng)庫(kù)。我們推送的所有鏡像都會(huì)被存儲(chǔ)在私有倉(cāng)庫(kù)內(nèi)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27380.html
摘要:這里以配置鏡像加速器為例進(jìn)行說(shuō)明。執(zhí)行重啟服務(wù)隨后就能享受鏡像加速帶來(lái)的鏡像加速下載的體驗(yàn)了。在命令提示符中執(zhí)行啟動(dòng)執(zhí)行以下命令設(shè)置環(huán)境變量。 前言 在安裝完Docker之后,還需要調(diào)整Docker的設(shè)置來(lái)適應(yīng)國(guó)內(nèi)的網(wǎng)絡(luò)條件。Windows客戶端和服務(wù)器端的設(shè)置步驟并不相同,需要分開介紹。 Windows 客戶端 Windows 10 專業(yè)版 由于 Windows 10 專業(yè)版可以安裝...
摘要:的安裝這里不再贅述直接安裝即可一創(chuàng)建私有倉(cāng)庫(kù)安裝之后版本,在倉(cāng)庫(kù)主機(jī)做如下操作注倉(cāng)庫(kù)的主機(jī)是,其他系統(tǒng)會(huì)稍有不同修改啟動(dòng)項(xiàng)添加內(nèi)容修改配置在值中添加以下內(nèi)容重新加載重啟拉取倉(cāng)庫(kù)鏡像代表倉(cāng)庫(kù)鏡像地址,例如啟動(dòng)容器建立私有倉(cāng)庫(kù)鏡像代表 showImg(https://segmentfault.com/img/bVbk9C0?w=1024&h=768); docker的安裝這里不再贅述,直接...
摘要:配置項(xiàng)數(shù)據(jù)持久化支持登錄授權(quán)驗(yàn)證測(cè)試做代理我的方式和遇到的問題作為一個(gè)容器其它方案相關(guān)鏈接官方提供了鏡像,可以方便的搭建私有倉(cāng)庫(kù),詳細(xì)文檔參考這里。支持為了使得私有倉(cāng)庫(kù)安全地對(duì)外開放,需要配置支持。 摘要 這篇文章內(nèi)容包括搭建docker私有倉(cāng)庫(kù)的一些配置項(xiàng)和遇到的問題及解決方案。 1.配置項(xiàng) 1.1. 數(shù)據(jù)持久化 1.2. TLS 支持 1.3. 登錄授權(quán)驗(yàn)證 1.4. docker...
摘要:無(wú)論這個(gè)連接是外部主動(dòng)建立的,還是內(nèi)部建立的。協(xié)議有表示層數(shù)據(jù)的表示安全壓縮。在整個(gè)發(fā)展過程中的所有思想和著重點(diǎn)都以一種稱為的文檔格式存在。 部署基礎(chǔ)知識(shí)url:協(xié)議://網(wǎng)站地址:端口(/)路徑地址?參數(shù)eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服務(wù)器 80端口:找服務(wù)器上提供服務(wù)的應(yīng)用 nginx uri:/ab...
閱讀 1905·2021-11-23 09:51
閱讀 1549·2021-11-19 09:40
閱讀 3221·2021-11-11 11:01
閱讀 1120·2021-09-27 13:34
閱讀 1852·2021-09-22 15:56
閱讀 2136·2019-08-30 15:52
閱讀 1071·2019-08-30 14:13
閱讀 3487·2019-08-30 14:10