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

How to push Docker image to self-hosted Artifactory?

刚刚在 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。我尝试使用包括 http:// 在内的整个 URl 进行标记,但它不接受将其作为标记名称。将标记图像推送到我的自托管 Artifactory 的正确语法是什么?

默认情况下,Artifactory as Docker 注册中心配置有存储库路径方法。这意味着,对于拉取和推送 docker 图像,您需要在 url 后附加存储库密钥和图像名称和标签。

例如:

假设 docker 图像是 alpine 并且标签是最新的。 Artifactory docker 存储库是本地类型,存储库密钥是 docker-local.

回到上面的例子,

docker login 10.100.10.100:8081
docker tag <alpine:latest-image_id> 10.100.10.100:8081/docker-local/alpine:latest
docker push 10.100.10.100:8081/docker-local/alpine:latest
docker pull 10.100.10.100:8081/docker-local/alpine

一些旁注:

  1. 在版本 7.x 中,网络 UI 可以通过端口 8082 访问,Artifactory 的服务仍在使用端口 8081

  2. 您可能需要将 运行 Artifactory 的 IP address:port 添加到 docker 守护进程配置文件中。如下:

    insecure-registries": [ “10.100.10.100:8081” ]

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