Unable to push windows docker image to Artifactory

2019-07-10 16:12发布

问题:

I'm using the beta version of Docker for Windows that supports Windows containers. When I attempt to push a Windows image (based on the microsoft/windowsservercore image) to our Artifactory repository, I get an error. It allows pushing all the layers, but then fails stating:

manifest invalid: manifest invalid

Software versions:

  • Docker for Windows 1.12.3-beta29.3 (8418)
  • Artifactory Enterprise 4.8.0 rev 40210

Is there some way to see what the manifest looks like that it is trying to push up to the server? Does anyone know why it is failing and if this is just something that's not supported by Artifactory yet?

I found this in the Artifactory logs:

2016-11-18 22:25:27,921 [http-nio-8081-exec-14878] [ERROR] (o.j.r.d.v.h.DockerManifestSyncer:47) - Could not find temp blob 'my-windows-image/_uploads/sha256__d33fff6043a134da85e10360f9932543f1dfc0c3a22e1edd062aa9b088a86c5b' 2016-11-18 22:25:27,921 [http-nio-8081-exec-14878] [ERROR] (o.j.r.d.v.r.h.DockerV2LocalRepoHandler:262) - Failed syncing manifest blobs, canceling manifest upload

回答1:

This is an issue with foreign layers. Essentially the image's manifest you are uploading is referencing at least one (foreign) layer that is not meant to be uploaded (as described in this pull request). Artifactory expects all the layers referenced in the manifest to be uploaded. As a result of those two factors, you are seeing the error you posted. The concept of these foreign layers is somewhat new and seems to be used almost exclusively for Windows-specific images. There is already an open JIRA (RTFACT-10305) for Artifactory to support this.