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