Can';t推送到Artifactory Docker注册表

Can';t推送到Artifactory Docker注册表,docker,artifactory,Docker,Artifactory,Docker注册表配置为支持多个Docker注册表,如所述。这使我们可以设置本地和远程存储库,只需登录到虚拟存储库即可推拉图像 从Artifactory的5.1.3版升级到6.0.1版后,我们无法再推送到虚拟存储库或本地存储库。我们可以登录到存储库并从中提取 docker push mycompany.com:6555/docker-virtual/helloworld The push refers to repository [mycompany.com:6555/docker-virtua

Docker注册表配置为支持多个Docker注册表,如所述。这使我们可以设置本地和远程存储库,只需登录到虚拟存储库即可推拉图像

从Artifactory的5.1.3版升级到6.0.1版后,我们无法再推送到虚拟存储库或本地存储库。我们可以登录到存储库并从中提取

docker push mycompany.com:6555/docker-virtual/helloworld
The push refers to repository [mycompany.com:6555/docker-virtual/helloworld]
2b8cbd0846c5: Pushing  1.848kB/1.848kB
http: no Host in request URL
在Artifactory上,我们可以在Artifactory.log中看到

2018-06-05 08:15:19,879 [ajp-nio-8019-exec-2] [DEBUG] (o.a.w.s.AccessFilter:305) - Header authentication org.artifactory.security.props.auth.PropsAuthenticationToken@2473d3d9: Principal: USERHERE; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@7798: RemoteIpAddress: 172.24.142.95; SessionId: null; Granted Authorities: admin, user found in cache.2018-06-05 08:15:19,879 [ajp-nio-8019-exec-2] [DEBUG] (o.a.w.s.RepoFilter  :100) - Entering request POST (172.24.142.95) /api/docker/docker-virtual/v2/helloworld/blobs/uploads/.
2018-06-05 08:15:19,880 [ajp-nio-8019-exec-2] [DEBUG] (o.a.w.s.RepoFilter  :337) - Identified'/api/lfs' in incoming ServletRequest path. Wrapping it with a GitLfsMalformedRequestWrapper
2018-06-05 08:15:19,880 [ajp-nio-8019-exec-2] [DEBUG] (o.a.w.s.RepoFilter  :380) - Returning fixed Docker Content-Type header content-type
2018-06-05 08:15:19,880 [ajp-nio-8019-exec-2] [DEBUG] (o.a.a.m.ModuleInfoUtils:348) - Could not transform helloworld/_uploads to a valid module info.
2018-06-05 08:15:19,880 [ajp-nio-8019-exec-2] [DEBUG] (o.a.a.m.ModuleInfoUtils:348) - Could not transform helloworld/_uploads to a valid module info.
2018-06-05 08:15:19,881 [ajp-nio-8019-exec-2] [DEBUG] (o.a.r.RealRepoBase  :79) - docker-virtual is not a valid module info -  'helloworld/_uploads': not enforcing snapshot/release policy.
2018-06-05 08:15:19,881 [ajp-nio-8019-exec-2] [DEBUG] (o.a.w.s.RepoFilter  :188) - Exiting request POST (172.24.142.95) /api/docker/docker-virtual/v2/helloworld/blobs/uploads/
在access.log上,我们看到

2018-06-05 08:21:17,525 [DENIED LOGIN]  for NA/172.24.142.95. 
即使我们已登录并可以提取我们的图像

在request.log中,我们看到

20180605082119|19|REQUEST|IPHERE|USERNAMEHERE|POST|/api/docker/docker-virtual/v2/helloworld/blobs/uploads/|HTTP/1.1|202|0
20180605082124|10|REQUEST|IPHERE|USERNAMEHERE|POST|/api/docker/docker-virtual/v2/helloworld/blobs/uploads/|HTTP/1.1|202|0
20180605082135|10|REQUEST|IPHERE|USERNAMEHERE|POST|/api/docker/docker-virtual/v2/helloworld/blobs/uploads/|HTTP/1.1|202|0
20180605082150|10|REQUEST|IPHERE|USERNAMEHERE|POST|/api/docker/docker-virtual/v2/helloworld/blobs/uploads/|HTTP/1.1|202|0

您引用的文章和正在使用的方法将Docker V2 API在Artifactory中的未记录API行为打包。具体来说,它依赖于POST“blobs/uploads”端点(您从日志中包含的端点)从请求主机头(Apache根据请求路径设置)提取存储库名称,并重构Docker客户端在后续请求中用于上载blob内容的相邻位置响应头

考虑到Artifactory中的Docker实现在最新版本中经历了一些更改,现在支持“无代理”配置,如果此解决方案不再有效,我不会感到非常惊讶。事实上,您现在可以使用与将图像推拉到Artifactory相同的方法,而不必在反向代理上配置任何此类攻击。我强烈建议你看一下这一部分,并考虑一下你目前的解决方案:

我们仍然建议在Artifactory前面使用反向代理服务器(用于SSL终止和其他一般性能考虑),但由于您已经将存储库名称作为docker标记的一部分,因此过渡应该非常顺利


我希望这能有所帮助。

您引用的文章和您使用的方法在Artifactory中搭载了Docker V2 API的未记录API行为。具体来说,它依赖于POST“blobs/uploads”端点(您从日志中包含的端点)从请求主机头(Apache根据请求路径设置)提取存储库名称,并重构Docker客户端在后续请求中用于上载blob内容的相邻位置响应头

考虑到Artifactory中的Docker实现在最新版本中经历了一些更改,现在支持“无代理”配置,如果此解决方案不再有效,我不会感到非常惊讶。事实上,您现在可以使用与将图像推拉到Artifactory相同的方法,而不必在反向代理上配置任何此类攻击。我强烈建议你看一下这一部分,并考虑一下你目前的解决方案:

我们仍然建议在Artifactory前面使用反向代理服务器(用于SSL终止和其他一般性能考虑),但由于您已经将存储库名称作为docker标记的一部分,因此过渡应该非常顺利


我希望这会有所帮助。

我建议以下文档页面作为入口点:我建议以下文档页面作为入口点: