[英]Proxying docker hub using Sonatype Nexus using registry-mirrors
[英]Controlling access to docker registry with Sonatype nexus
在我們當前的設置中,我們會代理整個 docker hub 來拉取鏡像,但我們想要的是將此代理限制為僅限官方索引,如 ubuntu、apache 等。在配置存儲庫期間,有此選項可以為存儲庫設置custom index
,所以我的兩個問題是:
custom index
選項,我是否能夠實現我上面解釋的內容?https://hub.docker.com/_/centos/
用於 centos,但沒有奏效。請建議如何解決這個問題。
是的,您可以使用自定義索引來限制您的存儲庫中的可用內容。 為此,您必須部署和維護自己的 docker 注冊表索引服務,並在配置 docker 代理存儲庫時使用它。
但是,一個更簡單的解決方案是使用內容選擇器來限制允許通過 docker 代理存儲庫訪問的內容,同時仍然使用 Docker Hub 及其原始索引。
使用簡化的內容選擇器解決方案有點麻煩,但可能對您有用。 本質上,您必須以正則表達式的形式提供白名單(或黑名單)。 此解決方案的含義是,您的注冊表用戶仍然可以搜索任何可用的映像,因為為了簡單起見,您可以繼續使用 Docker Hub 的索引。
path =~ '^/v2/library/(alpine|ubuntu).*$'
將只允許下載alpine
和ubuntu
。 現在,您創建的用戶將登錄到您的注冊表,例如。 $ docker login nexus.local:8085
。 該用戶將被授權同時拉取alpine
和ubuntu
(基於第 2 步中的內容選擇器),但無法下載其他任何內容。
一個成功的拉取示例: $ docker pull nexus.local:8085/alpine Using default tag: latest latest: Pulling from alpine Digest: sha256:0873c923e00e0fd2ba78041bfb64a105e1ecb7678916d1f7776311e45bf5634b Status: Image is up to date for nexus.local:8085/alpine:latest
拉取失敗示例: $ docker pull nexus.local:8085/postgres Using default tag: latest Error response from daemon: unauthorized: access to the requested resource is not authorized
我們正在代理整個 docker hub 以拉取圖像,但我們想要的是將此代理限制為僅限官方索引,如 ubuntu、apache
我所做的是:
Mode:
ALLOW
alpine
和centos
所以我創建了兩個匹配項:
^/v2/library/centos.*$
^/v2/library/alpine.*$
Routing Rule
這樣,除了 centos 和 alpine 之外的所有內容都可以從該 docker 代理存儲庫中獲得。 拉取其他任何東西都會導致 docker 出現“manigest unknown”錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.