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