What to check when your Docker pull fails with “500 Binary provider has no content” on the manifest file

Pradnya Shinde
2019-07-08 22:47

Summary

What to check when your Docker pull fails with "500 Binary provider has no content" on the manifest file
 

Details

When using Docker pull if it fails on the manifest file with this error:

Unable to create manifest markers for '….': 'Binary provider has no content for '…………….''

 

Resolution

Check the following:

  1. Verify in the High Availability page in Artifactory UI(Admin>Configuration>High Availability) that the IP values are correctly configured for all the nodes
  2. Go to Artifactory UI using the user that was used in the docker client for Pull and verify if the manifest.json file exists for the concerned docker artifact. Also, try to download it from the UI. If you don't see the manifest.json file then it is not available in the Artifactory itself so it is failing to download.
  3. But if you can view the manifest.json file on the UI then:
    1. Get the SHA1 value for that file(click manifest.json file -> General -> Checksums) and verify if that binary exists in the binary store(file system).
    2. Check if that binary exists(see for more info below) in the filestores according to the redundancy you have set, if you have sharding cluster.
    3. If it is missing from the filestore(s) then that binary could be somehow deleted after your upload of that artifact and you will need to find out why that was deleted from the file system and then restore that binary if it was accidentally deleted.

How to check if the binary exists in the filestore:
Artifactory uniquely stores artifacts using checksum-based storage.

A file that is uploaded to Artifactory, first has its SHA1 checksum calculated, and is then renamed to its checksum. It is then hosted in the configured filestore in a directory structure made up of the first two characters of the checksum. For example, a file whose checksum is "ac3f5e56…" would be stored in directory "ac"; a file whose checksum is "dfe12a4b…" would be stored in directory "df" and so forth. The example below shows the "d4" directory that contains two files whose checksum begins with "d4".

Checksum-based storage

Related: