概觀
使用 Artifactory 作為 Docker Registry 有三種方式,本文檔介紹了如何使用每種方式。請檢視下面的文檔,以确定使用哪種方式将 Artifactory 作為 Docker Registry。
使用Artifactory作為Docker Registry有兩種配置,使用反向代理以及不使用反向代理。
使用反向代理
使用反向代理時,将 Docker 指令映射到Artifactory 中的多個 Docker Registry 中,使用方式有子域名以及端口的方式
沒有反向代理
從版本5.8開始,Artifactory 支援在不使用反向代理的情況下使用 Docker Registry,允許你在 Artifactory 中建立和使用多個 Docker Registry,使用方式為路徑的方式。
使用反向代理配置
将 Artifactory 與反向代理一起使用時,需要使用子域名或端口的方式将 Docker 指令映射到 Artifactory 中的 Docker Registry 。

使用端口方法,端口号将映射到每個 Artifactory Docker Registry。雖然這是一種簡單的入門方法,但你需要修改反向代理配置,并在 Artifactory 中定義的每個新的 Docker Registry 時添加新映射。此外,IT部門的防火牆和其他限制可能會限制端口号,使端口方法不可行。
使用子域方法,隻需要配置一次反向代理,從 Docker 指令到 Artifactory 中的 Docker Registry 的映射是動态的,無需進一步修改反向代理配置。
我們建議使用子域方法,因為它隻需要配置一次反向代理。
子域名方式
使用子域名方式開始使用 Artifactory 作為 Docker Registry 涉及四個基本步驟:
1.配置 Artifactory
2.配置反向代理
3.配置 Docker 用戶端
4.驗證你的配置
配置 Artifactory
使用子域名方法配置Artifactory和反向代理,請執行以下步驟:
1.確定 Artifactory 已啟動并正在運作,并使用有效許可證激活。
2.在admin->General Configuration 中配置Custom Base URL(使用 art.local 作為例子,填寫 http://art.local/artifactory 或https://art.local/artifactory)
3.建立虛拟 Docker 存儲庫(以及它應包含的本地和遠端 Docker 存儲庫)。在下面的示例中,我們将使用名為 docker-virtual 的存儲庫 。
4.確定已啟動并運作反向代理伺服器。
5.擷取通配符 SSL 證書或使用通配符自簽名證書(要建立自簽名證書,可以按照 Ubuntu 的這些說明進行操作)或将 Docker 用戶端配置為使用不安全的 Registry。
確定證書與反向代理配置中使用的 Artifactory 主機名比對。在下面的示例中,我們将使用 art.local 作為 Artifactory 的域名。
配置反向代理
Artifactory 可以 Nginx 和 Apache 伺服器生成完整的反向代理配置檔案。
在 admin→Http Settings 中設定反向代理方式并根據反向代理的設定方式填寫字段,同時確定:
1.在“ Public Server Name” 字段中使用正确的 Artifactory 主機名(在我們的示例使用 art.local)
2.在 Docker Settings 下選擇 Sub Domain
3.配置完成後下載下傳自動生成的配置檔案配置到對應的反向代理伺服器
配置 Docker 用戶端
要配置Docker用戶端,請執行以下步驟
1.将以下内容添加到DNS或用戶端 /etc/hosts 檔案中:
<ip-address> docker-virtual.art.local
2.由于證書是自簽名的,是以需要将其導入 Docker 證書信任庫,如 Docker 文檔中所述。或者可以将 Docker 用戶端配置為使用不安全的Registry,如 Docker 文檔中所述。
3.重新啟動 Docker 守護程式/引擎以應用不安全的 Registry 标志(如果導入了自簽名證書,則無需重新啟動 Docker 守護程式/引擎)。
驗證你的配置
要驗證是否正确配置了反向代理,請運作以下指令,確定傳回代碼為200:
curl -I -k -v https://art.local/artifactory/api/system/ping
運作以下指令以確定你的代理配置正常運作并且可以與Artifactory通信:
拉取“hello-world”圖像
docker pull hello-world
登入到 docker-virtual 存儲庫
docker login docker-virtual.art.local
标記“hello-world”圖像
docker tag hello-world docker-virtual.art.local/hello-world
将标記的“hello-world”圖像推送到 docker-virtual
docker push docker-virtual.art.local/hello-world
端口方式
使用端口方式開始使用 Artifactory 作為 Docker Registry 涉及兩個基本步驟:
1.配置 Artifactory 和你的反向代理。
2.配置 Docker 用戶端。
配置 Artifactory 和你的反向代理
要使用端口方式配置Artifactory和反向代理,請執行以下步驟:
2.在 admin->General Configuration 中配置Custom Base URL(使用art.local作為例子,填寫http://art.local/artifactory或https://art.local/artifactory)
3.建立 虛拟 Docker 存儲庫(以及它應包含的本地和遠端 Docker 存儲庫)。在下面的示例中,我們将使用名為 docker-virtual 的存儲庫 。
Artifactory 可以 Nginx和 Apache 伺服器生成完整的反向代理配置檔案。
2.在 Docker Settings 下選擇 Ports,在下面的示例中,我們将使用端口 5001 來綁定存儲庫 docker-virtual
配置 Docker 用戶端
要配置Docker用戶端,請執行以下步驟:
<ip-address> art.local
2.由于證書是自簽名的,是以需要将其導入 Docker 證書信任庫,如 Docker 文檔中所述。或者可以将 Docker 用戶端配置為使用不安全的 Registry,如 Docker 文檔中所述。
curl -I -k -v https://art.local/artifactory/api/system/ping
運作以下指令以確定你的代理配置正常運作并且可以與 Artifactory 通信:
docker login art.loca:5001
docker tag hello-world art.local:5001/hello-world
docker push art.local:5001/hello-world
不實用反向代理
之前,Artifactory 在使用反向代理時支援 Ports 和 Subdomain 方法。從 5.8版開始。 Artifactory 引入了一種稱為“存儲庫路徑”方式的新方法,它使用 Docker 存儲庫路徑字首(<REPOSITORY_KEY / IMAGE>)從 Docker 用戶端通路特定的 Artifactory Docker Registry。注意,由于其他原因,你可能仍然為 Artifactory 配置了反向代理,但是當配置為使用 Repository Path 方法時,Artifactory 中對 Docker Registry 的請求将由 Artifactory 的嵌入式 Tomcat 處理而不是反向代理處理。
需要 Docker API v2
隻能将 Repository Path 方法與為 Docker API v2配置的 Artifactory Docker Registry 一起使用。
生産環境建議使用子域名方式
我們建議在生産系統中使用 Artifactory 的子域名方式,因為此方法允許你在反向代理上添加通配符 SSL 證書,以便安全通路 Docker Registry。
雖然你可以在 Tomcat 級别添加 SSL 證書,但這不是推薦的做法,因為針對證書的驗證過程在記憶體和CPU上占用大量資源。
當不需要安全通路時,Repository Path方法更合适。
要将 Artifactory 配置為使用 Repository Path 方法,請執行以下步驟:
2.建立你的 虛拟 Docker 存儲庫 (以及它應包含的本地和遠端 Docker 存儲庫)。在下面的示例中,我們将使用名為 docker-virtual 的存儲庫 。
3.從 Admin->Configuration | HTTP Settings。 在 “Docker Settings” 面闆中,選擇“ Repository Path” 作為 Docker 通路方法。在“Reverse Proxy Settings” 面闆中,選擇“Embedded Tomcat” ”(表示未使用反向代理)。
使用 Repository Path 方法,可以将 Artifactory 作為使用不安全的連接配接(即僅支援 HTTP,而不支援 HTTPS)的 Docker Registry。你需要配置 Docker 用戶端以使用不安全的 Registry ,如 Docker 文檔中所述。
重新啟動 Docker 守護程式/引擎以應用不安全的Registry(如果導入了自簽名證書,則無需重新啟動 Docker 守護程式/引擎)。運作 $docker info 将列出已在不安全 Registry 條目下應用的不安全 Registry。
不要使用 localhost或127.0.0.1或“/ artifactory”
由于 Docker 用戶端的限制,你無法通過 localhost 或127.0.0.1通路 Artifactory Docker Registry。如果需要通路 Artifactory 的本地安裝,請確定指定其完整IP位址。
此外,在指定 Artifactory 的 URL 時,應省略通常使用的“/ artifactory”字尾。
例如,如果本地計算機的IP位址為10.1.16.114,則必須将 Artifactory URL 指定為http://10.1.16.114:8081(使用http://localhost:8081不起作用)。
下面的代碼片段假設此次在IP 10.1.16.114的 Artifactory 安裝中命名了一個 docker-virtual 的虛拟 Docker 存儲庫 。
首先,應該通過運作以下指令來驗證 Docker 用戶端是否可以通路 Artifactory。確定傳回碼為200:
curl -I -k -vhttp://10.1.16.114:8081/artifactory/api/system/ping
現在,可以繼續測試 Docker Registry。
登入 Artifactory 作為 Docker Registry
docker login -u admin -p password 10.1.16.114:8081
從 docker-virtual 存儲庫中拉取“hello-world”圖像
docker pull 10.1.16.114:8081/docker-virtual/hello-world:latest
标記 Docker 鏡像
docker tag 10.1.16.114:8081/docker-virtual/hello-world:latest 10.1.16.114:8081/docker-virtual/<tag_name>
将标記的鏡像推送到 docker-virtual 倉庫
docker push 10.1.16.114:8081/docker-virtual/<tag_name>