如何将Docker镜像推送到自托管Artifactory?

dev*_*221 1 artifactory docker

刚刚创建了一个在 AWS 上运行的自托管 Artifactory。我可以通过 10.100.10.100:8082(不是真实地址)访问 Artifactory UI。我设置了一个 Docker 存储库,该存储库的 UI 中显示的 URL 是http://10.100.10.100:8082/artifactory/myrepo/。Docker登录命令成功,但是Docker推送不起作用。我尝试将图像标记为 10.100.10.100:8082/artifactory/myrepo,但重试几次后,我得到了unknown: not found. 我尝试使用整个 URl 进行标记,包括http://但它不接受它作为标记名称。将标记图像推送到我的自托管 Artifactory 的正确语法是什么?

Tom*_*m.A 8

默认情况下,Artifactory 作为 Docker 注册表是使用存储库路径方法配置的。这意味着,要拉动和推送 docker 镜像,您需要在 url 后面附加存储库密钥、镜像名称和标签。

\n

例如:

\n

假设 docker 镜像是 alpine 并且标签是最新的。\nArtifactory docker 存储库的类型为 local,存储库密钥为 docker-local。

\n

回到上面的例子,

\n
docker login 10.100.10.100:8081\ndocker tag <alpine:latest-image_id> 10.100.10.100:8081/docker-local/alpine:latest\ndocker push 10.100.10.100:8081/docker-local/alpine:latest\ndocker pull 10.100.10.100:8081/docker-local/alpine\n
Run Code Online (Sandbox Code Playgroud)\n

一些旁注:

\n
    \n
  1. 在版本 7.x 中,可通过端口 8082 访问 Web UI,而 Artifactory\xe2\x80\x99s 服务仍使用端口 8081

    \n
  2. \n
  3. 您可能需要将正在运行的 Artifactory 的 IP 地址:端口添加到 docker 守护程序配置文件中。如下:

    \n

    不安全注册表": [\n"10.100.10.100:8081"\n]

    \n
  4. \n
\n

有关存储库路径方法的更多信息,请参阅: https: //www.jfrog.com/confluence/display/JFROG/Getting+Started+with+Artifactory+as+a+Docker+Registry#GettingStartedwithArtifactoryasaDockerRegistry-TheRepositoryPathMethod

\n


sta*_*tor 5

为了补充 Tom.A 的出色答案,我想强调你必须推向正确的方向URL。

如果您的存储库 URL(在 Artifactory 中又称为“文件 URL”)如下所示:

http://10.100.10.100:8082/artifactory/myrepo/
Run Code Online (Sandbox Code Playgroud)

你必须推动:

10.100.10.100:8082/myrepo/myimage:mytag
Run Code Online (Sandbox Code Playgroud)

因此,您必须artifactory从 URL 中删除并相应地标记您的图像。