拉Artifactory Docker映像

时间:2018-12-23 13:06:26

标签: docker artifactory

我使用ip(x.x.x.x)在远程桌面上下载了工件6.6.0,并连接到端口8081。

我可以从计算机http://x.x.x.x:8081/artifactory连接到人工制品。 我的计算机上有Docker客户端,但远程桌面上没有Docker。

我有一个名为“ docker”的虚拟docker存储库。

我想通过Docker客户端登录到工件上的docker存储库-> “码头登录” 然后在该存储库中提取图像。

如何登录并从人工制品中提取图像? 注意,我没有SSL,所以我使用的是HTTP。

3 个答案:

答案 0 :(得分:0)

第一: 与Artifactory->配置-> HTTP设置相关的docker登录 我使用“ Docker访问方法”作为“存储库路径”

docker login -u admin -p **** x.x.x.x:8081

第二: 由于我使用HTTP,因此应将此ip“ x.x.x.x:8081”添加到Docker客户端的“ insecure-registries”中。 enter image description here

或仅将其添加到〜/ .docker / config.json中不安全的注册表中,如下所示:

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

然后重新启动docker

答案 1 :(得分:0)

仅使用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。)

答案 2 :(得分:0)

可以在Artifactory上配置Docker的不同方法如下:

  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>

Port方法与其他两个方法类似,但是我们不会从存储库中声明路径并在主机名之前添加存储库,而是使用不同的端口来区分存储库,例如。

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

存储库端口将在反向代理级别的重写中定义,与子域方法相同。

该问题涉及的问题很可能是前面提到的不安全的注册表,因为除非明确允许,否则docker需要使用HTTPS。

对于存储库路径方法,如果使用SSL,请确保使用通配符证书* .myhostname.com,以便可以安全地连接不同的存储库,并且不要抱怨主机名与证书不匹配。

澄清一些措辞:

Docker映像:在Docker术语中称为“名称空间/存储库:标记”组。例如,在docker pull docker-repo.myhostname.com/mycompany/ourapp:latest中,图像名称应为mycompany/ourapp:latest

存储库:在Docker存储库中,大多数人都将其称为映像名称,或者在上面的示例中是“ ourapp”。在大多数情况下,我所说的存储库就是大多数人所说的注册表。由于Artifactory可以容纳许多这样的注册表,因此该术语变得令人困惑,对于大多数其他技术,命名约定倾向于在该级别将它们称为“存储库”。在谈到Artifactory时,有人说“存储库”时,很可能是指整个注册表。