Artifactory和Jenkins的自定义Docker存储库URL

时间:2016-06-16 13:11:16

标签: jenkins docker artifactory

我试图在我们的Jenkins实例上运行Docker Build and Publish插件。 Docker镜像正确构建,但是我将此图像推送到Artifactory Docker Repository时出现问题。

Artifactory存储库托管在https://instance.company.com/artifactory/test-docker-build

当我查看构建日志时,无法上传Docker镜像,但网址看起来像https://instance.company.com/test-docker-build。以下是日志的输出:

[workspace] $ docker push instance.company.com/test-docker-build:test
The push refers to a repository [instance.company.com/test-docker-build] (len: 1)
Sending image list
Error: Status 405 trying to push repository test-docker-build: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>405 Method Not Allowed</title>\n</head><body>\n<h1>Method Not Allowed</h1>\n<p>The requested method PUT is not allowed for the URL /v1/repositories/test-docker-build/.</p>\n</body></html>\n"
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE

我假设它失败了,因为存储库URL不正确。我也尝试登录到后端并通过命令行推送正确的存储库URL,但这似乎也无法正常工作。

我的主要问题是:docker不喜欢URL结构,因为它使用&#39; /&#39;表示用户/图像名称? I.E.如果网址没有包含/神器,这会有用吗?

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:0)

您回复的响应看起来像反向代理会返回的内容(nginx \ apache),而不是Artifactory - 您是否遵循了如何使用Artifactory设置Reverse Proxy的说明?

通常你需要:

  • 正确设置reverse proxy for docker用法
  • 获取 company.com 的证书并在代理中使用它或将Artifactory设置为insecure registry(注意这一点 - 不应该在生产中使用)

完成这些后,您将引用Artifactory实例,因为 instance.company.com 不需要/ artifactory或其他任何内容。 您发布的网址是反向代理在指向Artifactory时应使用的内容(即 instance.company.com/artifactory/api/docker/test-docker-build/v2

然后用法看起来像docker push instance.company.com/myImage:myTag