簡體   English   中英

拉取 Artifactory Docker 鏡像

[英]Pull Artifactory Docker Images

我使用 ip (xxxx) 在遠程桌面上下載了 artifactory 6.6.0 並連接到端口 8081。

我可以從我的電腦http://xxxx:8081/artifactory 連接到 artifactory 我的計算機上有 docker 客戶端,但遠程桌面上沒有 docker。

我有一個名為“docker”的虛擬 docker 存儲庫。

我想通過 docker 客戶端登錄到我在 artifactory -> “docker login” 上的 docker 存儲庫,然后將圖像拉到這個存儲庫中。

如何登錄並從 artifactory 中提取圖像? 請注意,我沒有 SSL,所以我使用的是 HTTP。

第一:與Artifactory相關的docker登錄 - >配置 - > HTTP設置我使用“Docker訪問方法”作為“存儲庫路徑”

docker login -u admin -p **** xxxx:8081

第二:因為我使用 HTTP,這個 ip“xxxx:8081”應該添加到 Docker 客戶端的“insecure-registries”。 在此處輸入圖像描述

或者只是將它添加到 ~/.docker/config.json 中的不安全注冊表,如下所示:

   {
    "auths": {
        "x.x.x.x:8081": {}
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/18.09.0 (windows)"
    },
    "credsStore": "wincred"
}

然后重啟docker

我不知道僅使用 IP 地址訪問服務器時它是如何工作的……但是如果您使用主機名,則需要在其前面加上回購協議的名稱。

例子:

我的 Artifactory Enterprise 服務器位於https://artifactory.mycompany.com

我可以拉圖像

docker login repo1.artifactory.mycompany.com
docker pull repo1.artifactory.mycompany.com/myImage:latest

Dockerfile 示例:

FROM repo1.artifactory.mycompany.com/myImage:latest

(在運行 docker docker build之前,您需要運行docker login repo1.artifactory.mycompany.com 。)

Docker 可以配置為在 Artifactory 端使用的不同方式,這些是:

  1. 回購路徑方法
  2. 子域方法
  3. 端口方法

回購路徑是這個問題正在使用的方法,我們通過其完整路徑請求圖像,例如

docker pull / push <HOST>:8081/<REPOSITORY_KEY>/<IMAGE>:<TAG>
docker login <HOST>:8081

值得注意的是,為了讓它工作,我們需要進入 Artifactory 的 HTTP 設置並將 Docker 方法設置為“Repository Path”,否則某些 Tomcat 級別的重寫不會啟用,您的登錄可能會不行。

子域將存儲庫名稱從路徑中替換為子域中,就像之前提到的那樣,例如

docker pull / push <REPOSITORY_KEY>.<HOSTNAME>/<IMAGE>:<TAG>
docker login <REPOSITORY_KEY>.<HOSTNAME>

端口方法與其他兩個類似,但不是從路徑中刪除存儲庫來聲明並將其添加到主機名之前,我們將使用不同的端口來區分存儲庫,例如

docker pull / push <HOST>:<REPOSITORY_PORT>/<IMAGE>:<TAG>
docker login <HOST>:<REPOSITORY_PORT>

存儲庫端口將在反向代理級別的重寫中定義,與子域方法相同。

問題所討論的問題可能是之前提到的不安全注冊表,因為 docker 需要使用 HTTPS,除非明確允許不這樣做。

對於存儲庫路徑方法,如果使用 SSL,請確保使用通配符證書 *.myhostname.com 以便可以安全地連接到不同的存儲庫,而不會抱怨主機名與證書不匹配。

澄清一些措辭:

Docker Image:在 Docker 術語中稱為“命名空間/存儲庫:標簽”的組。 例如在docker pull docker-repo.myhostname.com/mycompany/ourapp:latest中,圖像名稱將是mycompany/ourapp:latest

存儲庫:在 Docker 存儲庫中,大多數人認為是圖像名稱,或者在上面的示例中是“ourapp”。 大多數時候我所說的存儲庫,就是大多數人所說的注冊表。 由於 Artifactory 可以容納許多這樣的注冊表,因此術語變得令人困惑,而對於大多數其他技術,命名約定往往是在該級別將它們稱為“存儲庫”。 在談論 Artifactory 時,有人說“存儲庫”,它很可能指的是整個注冊表。

暫無
暫無

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

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