拉取 Artifactory Docker 图片
Pull Artifactory Docker Images
我使用 ip (x.x.x.x) 在远程桌面上下载了 artifactory 6.6.0 并连接到端口 8081。
我可以从我的电脑连接到 artifactory http://x.x.x.x:8081/artifactory。
我的计算机上有 docker 客户端,但远程桌面上没有 docker。
我有一个名为 "docker" 的虚拟 docker 存储库。
我想通过 docker 客户端登录到我在 artifactory 上的 docker 存储库 ->
"docker login "
然后在这个存储库中拉取图像。
如何登录并从 artifactory 中提取图像?
请注意,我没有 SSL,所以我使用的是 HTTP。
首先:
docker 与 Artifactory 相关的登录 -> 配置 -> HTTP 设置
我用 "Docker access method" 作为 "Repository path"
docker login -u admin -p **** x.x.x.x:8081
第二个:
由于我使用 HTTP,因此应将此 ip "x.x.x.x: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 login repo1.artifactory.mycompany.com
才能 运行 宁 docker build
。)
Docker 可以通过不同的方式配置为在 Artifactory 端使用,这些是:
- 回购路径方法
- 子域方法
- 端口方法
回购路径是这个问题正在使用的方法,为此我们通过完整路径请求图像,例如
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 图片:Docker 术语中的组 "namespace/repository:tag"。例如在 docker pull docker-repo.myhostname.com/mycompany/ourapp:latest
中图像名称将是 mycompany/ourapp:latest
存储库:在 Docker 存储库中是大多数人认为的图像名称,或者在上面的示例中 "ourapp"。大多数时候我所说的存储库,就是大多数人所说的注册表。由于 Artifactory 可以容纳许多这样的注册表,因此术语变得令人困惑,并且对于大多数其他技术,命名约定往往是在该级别将它们称为 "repositories"。在谈论 Artifactory 时,有人说 "repository" 它很可能指的是整个注册表。
我使用 ip (x.x.x.x) 在远程桌面上下载了 artifactory 6.6.0 并连接到端口 8081。
我可以从我的电脑连接到 artifactory http://x.x.x.x:8081/artifactory。 我的计算机上有 docker 客户端,但远程桌面上没有 docker。
我有一个名为 "docker" 的虚拟 docker 存储库。
我想通过 docker 客户端登录到我在 artifactory 上的 docker 存储库 -> "docker login " 然后在这个存储库中拉取图像。
如何登录并从 artifactory 中提取图像? 请注意,我没有 SSL,所以我使用的是 HTTP。
首先: docker 与 Artifactory 相关的登录 -> 配置 -> HTTP 设置 我用 "Docker access method" 作为 "Repository path"
docker login -u admin -p **** x.x.x.x:8081
第二个:
由于我使用 HTTP,因此应将此 ip "x.x.x.x: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 login repo1.artifactory.mycompany.com
才能 运行 宁 docker build
。)
Docker 可以通过不同的方式配置为在 Artifactory 端使用,这些是:
- 回购路径方法
- 子域方法
- 端口方法
回购路径是这个问题正在使用的方法,为此我们通过完整路径请求图像,例如
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 图片:Docker 术语中的组 "namespace/repository:tag"。例如在 docker pull docker-repo.myhostname.com/mycompany/ourapp:latest
中图像名称将是 mycompany/ourapp:latest
存储库:在 Docker 存储库中是大多数人认为的图像名称,或者在上面的示例中 "ourapp"。大多数时候我所说的存储库,就是大多数人所说的注册表。由于 Artifactory 可以容纳许多这样的注册表,因此术语变得令人困惑,并且对于大多数其他技术,命名约定往往是在该级别将它们称为 "repositories"。在谈论 Artifactory 时,有人说 "repository" 它很可能指的是整个注册表。