簡體   English   中英

使用 Sonatype nexus 控制對 docker 注冊表的訪問

[英]Controlling access to docker registry with Sonatype nexus

在我們當前的設置中,我們會代理整個 docker hub 來拉取鏡像,但我們想要的是將此代理限制為僅限官方索引,如 ubuntu、apache 等。在配置存儲庫期間,有此選項可以為存儲庫設置custom index ,所以我的兩個問題是:

  • 使用這個custom index選項,我是否能夠實現我上面解釋的內容?
  • 如果是,那么我應該從哪里獲取自定義索引的 URL。 到目前為止,我嘗試將https://hub.docker.com/_/centos/用於 centos,但沒有奏效。

請建議如何解決這個問題。

是的,您可以使用自定義索引來限制您的存儲庫中的可用內容。 為此,您必須部署和維護自己的 docker 注冊表索引服務,並在配置 docker 代理存儲庫時使用它。

但是,一個更簡單的解決方案是使用內容選擇器來限制允許通過 docker 代理存儲庫訪問的內容,同時仍然使用 Docker Hub 及其原始索引。

使用簡化的內容選擇器解決方案有點麻煩,但可能對您有用。 本質上,您必須以正則表達式的形式提供白名單(或黑名單)。 此解決方案的含義是,您的注冊表用戶仍然可以搜索任何可用的映像,因為為了簡單起見,您可以繼續使用 Docker Hub 的索引。

  1. 創建一個指向 Docker Hub 的 docker 代理存儲庫。
  2. 創建一個帶有白/黑圖像列表的內容選擇器,例如。 path =~ '^/v2/library/(alpine|ubuntu).*$'將只允許下載alpineubuntu
  3. 創建類型為Repository Content Selector的新權限。
  4. 創建一個包含上述權限的角色。
  5. 創建具有上述角色的用戶。

現在,您創建的用戶將登錄到您的注冊表,例如。 $ docker login nexus.local:8085 該用戶將被授權同時拉取alpineubuntu (基於第 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
    • 我只想要alpinecentos所以我創建了兩個匹配項:
      • ^/v2/library/centos.*$
      • ^/v2/library/alpine.*$
  • 轉到 docker 代理存儲庫的配置
    • 轉到Routing Rule
    • 並選擇您創建的路由規則。

這樣,除了 centos 和 alpine 之外的所有內容都可以從該 docker 代理存儲庫中獲得。 拉取其他任何東西都會導致 docker 出現“manigest unknown”錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM