使用 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和反向代理,请执行以下步骤:
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 可以 Nginx和 Apache 服务器生成完整的反向代理配置文件。
在 admin→Http Settings 中设置反向代理方式并根据反向代理的设置方式填写字段,同时确保:
1.在“ Public Server Name” 字段中使用正确的 Artifactory 主机名(在我们的示例使用 art.local)
2.在 Docker Settings 下选择 Ports,在下面的示例中,我们将使用端口 5001 来绑定存储库 docker-virtual
配置 Docker 客户端
要配置Docker客户端,请执行以下步骤:
1.将以下内容添加到DNS或客户端 /etc/hosts 文件中:
<ip-address> 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 art.loca:5001
-
标记“hello-world”图像
docker tag hello-world art.local:5001/hello-world
-
将标记的“hello-world”图像推送到 docker-virtual
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
要将 Artifactory 配置为使用 Repository Path 方法,请执行以下步骤:
1.确保 Artifactory 已启动并正在运行,并使用有效许可证激活。
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不起作用)。
首先,应该通过运行以下命令来验证 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>
原文链接:https://blog.51cto.com/u_15127508/2656634