Dotnet-docker: Can't pull microsoft/dotnet:1.0.0-windowsservercore-core

Created on 7 Aug 2016  路  8Comments  路  Source: dotnet/dotnet-docker

From SO question - http://stackoverflow.com/q/38813833/1318694

A docker pull for microsoft/dotnet:1.0.0-windowsservercore-core fails

$ docker pull microsoft/dotnet:1.0.0-windowsservercore-core`. 
1.0.0-windowsservercore-core: Pulling from microsoft/dotnet
1239394e5a8a: Downloading 
d90a2ac79ff2: Download complete 
cde3fa87b2c9: Download complete 
9f60be4f8205: Download complete 
c4f6347ed968: Download complete 
unknown blob

You can have a look via the Registry API at the tag manifest:

curl -i -H "Authorization: Bearer $TOKEN" https://index.docker.io/v2/microsoft/dotnet/manifests/1.0.0-windowsservercore-core
HTTP/1.1 200 OK
Content-Length: 4168
Content-Type: application/vnd.docker.distribution.manifest.v1+prettyjws
Docker-Content-Digest: sha256:190e1596bf49b844f6fc3361bbedcd50c917079e5f9f305a1fe807ae4b66a6a7
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:190e1596bf49b844f6fc3361bbedcd50c917079e5f9f305a1fe807ae4b66a6a7"
Date: Sun, 07 Aug 2016 13:25:58 GMT
Strict-Transport-Security: max-age=31536000

{
   "schemaVersion": 1,
   "name": "microsoft/dotnet",
   "tag": "1.0.0-windowsservercore-core",
   "architecture": "amd64",
   "fsLayers": [
      {
         "blobSum": "sha256:9f60be4f8205c0d384e6af06d61e253141395d4ef7000d8bb34032d1cbd8ee98"
      },
      {
         "blobSum": "sha256:cde3fa87b2c91c895014a6c83481b27ede659f502538c6ed416574a3abe5a7a2"
      },
      {
         "blobSum": "sha256:d90a2ac79ff2c769b497fabddbd14ae8a66f8034dda53fd5781402ec58416989"
      },
      {
         "blobSum": "sha256:1239394e5a8ab79fbd3b751dc5d98decf5886f14339958fdf5c1f96c89da58a7"
      }
   ],

Which includes the 1239394e5a8 blob. Then getting the blob returns a 404.

curl -i -H "Authorization: Bearer $TOKEN" https://index.docker.io/v2/microsoft/dotnet/blobs/sha256:1239394e5a8ab79fbd3b751dc5d98decf5886f14339958fdf5c1f96c89da58a7
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
Date: Sun, 07 Aug 2016 13:29:02 GMT
Content-Length: 157
Strict-Transport-Security: max-age=31536000

{"errors":[{"code":"BLOB_UNKNOWN","message":"blob unknown to registry","detail":"sha256:1239394e5a8ab79fbd3b751dc5d98decf5886f14339958fdf5c1f96c89da58a7"}]}

Whereas you would normally get:

curl -i -H "Authorization: Bearer $TOKEN" https://index.docker.io/v2/microsoft/dotnet/blobs/sha256:d90a2ac79ff2c769b497fabddbd14ae8a66f8034dda53fd5781402ec58416989
HTTP/1.1 307 Temporary Redirect
Content-Type: application/octet-stream
Docker-Distribution-Api-Version: registry/2.0
Location: https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/d9/d90a2ac79ff2c769b497fabddbd14ae8a66f8034dda53fd5781402ec58416989/data?Expires=1470577758&Signature=B6n1cC~fNwgeYYbA2w6peZOWM5RyV79OrBW-9nN2NdxpB60FC1sUe7e9I4kcA7Meq1SAG7z4P4gQiLvNfokHr8u0p3LTUQgk4JpqZPxqSPNtDWoSyjzyTN0sK3iZPhgxcNBVfddHyxgkAw7xb47zUg76RjZ5-O8QNl2YeEKeX24_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q
Date: Sun, 07 Aug 2016 13:29:18 GMT
Content-Length: 432
Strict-Transport-Security: max-age=31536000

<a href="https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/d9/d90a2ac79ff2c769b497fabddbd14ae8a66f8034dda53fd5781402ec58416989/data?Expires=1470577758&amp;Signature=B6n1cC~fNwgeYYbA2w6peZOWM5RyV79OrBW-9nN2NdxpB60FC1sUe7e9I4kcA7Meq1SAG7z4P4gQiLvNfokHr8u0p3LTUQgk4JpqZPxqSPNtDWoSyjzyTN0sK3iZPhgxcNBVfddHyxgkAw7xb47zUg76RjZ5-O8QNl2YeEKeX24_&amp;Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q">Temporary Redirect</a>.

You might need to rebuild that layer and publish again to work around the problem?

question

Most helpful comment

Here's what was recommended from @friism. For the time being you can run the Windows daemon on a different pipe to avoid the namespace conflicts and run side by side.
.\dockerd.exe -H npipe:////./pipe/win_engine --register-service
You can then run docker -H npipe:////./pipe/win_engine or set DOCKER_HOST to the win_engine pipe

Otherwise, you can net stop docker then run Docker for Windows and it should work.

All 8 comments

@deployable, What is the OS of your Docker host machine? Per the Windows container requirements, "The Windows container feature is only available on Windows Server 2016 (Core and with Desktop Experience), Nano Server, and Windows 10 Professional and Enterprise (insiders build 14352 and up)." This means the windowsservercore and nanoserver images can only be used on a compatible host. The error you are reporting, is the error you get when a windowsservercore or nanoserver image is pulled from an unsupported host.

I have Windows 10 Anniversary Update (14393.10) here and I get the same unknown blob error for both nanoserver and windowservercore images. I have both Hyper-V and Containers features enabled in Windows. I have installed Docker by downloading Docker for Windows from the docker website.

Step 1 : FROM microsoft/dotnet:nanoserver
nanoserver: Pulling from microsoft/dotnet

cf62dbf6d334: Downloading
a776f496337b: Download complete
96d59771ece9: Download complete
5453033d8926: Download complete
22661255056e: Download complete
e0d228378ae9: Download complete
c2406930dc6d: Download complete
903665801c64: Download complete
unknown blob
Step 1 : FROM microsoft/dotnet:1.0.0-windowsservercore-core
1.0.0-windowsservercore-core: Pulling from microsoft/dotnet

1239394e5a8a: Downloading
d90a2ac79ff2: Download complete
cde3fa87b2c9: Download complete
9f60be4f8205: Download complete
c4f6347ed968: Download complete
unknown blob

@MichaelSimons I'm personally not on Windows, so that's why I was digging around the Registry API.

The Hubs Registry API response when trying to download the 1239394e5a8a layer blob is:

{
  "errors": [{
       "code":"BLOB_UNKNOWN",
       "message":"blob unknown to registry",
       "detail":"sha256:1239394e5a8ab79fbd3b751dc5d98decf5886f14339958fdf5c1f96c89da58a7"
  }]
}

I wouldn't expect the API to stop you downloading 1 out of the 4 layer blobs for the image. I guess that would have to be based on the clients User Agent string? Curl makes no attempt to look like a docker client on any requests.

@ivanz, I was having the same issue but was able to get things working when I installed the dockerd mentioned in the windows containers instructions. The caveat though is now my Docker for Windows no longer works. Perhaps @PatrickLang could provide or point us to some guidance (.e.g how to use Docker for Windows and Windows Containers side by side)

Here's what was recommended from @friism. For the time being you can run the Windows daemon on a different pipe to avoid the namespace conflicts and run side by side.
.\dockerd.exe -H npipe:////./pipe/win_engine --register-service
You can then run docker -H npipe:////./pipe/win_engine or set DOCKER_HOST to the win_engine pipe

Otherwise, you can net stop docker then run Docker for Windows and it should work.

Per previous comments, this is the current docker experience when pulling a windows based image outside of a Windows Container environment. The previous comment gives guidance on how to run SxS. These are both docker issues that are not specific to the microsoft/dotnet images. Once fully supported there will be a manifest created for the microsoft/dotnet images that will allow a set of common tags to be pulled from all platforms.

@MichaelSimons do you have any links to the docker issues you are describing so I can follow them?

@siggetest, The manifest supports this today. This blog post explains what support exists. It is more of an issue on the tooling side that is the problem form microsoft/dotnet. The microsoft/dotnet work is being tracked with https://github.com/dotnet/dotnet-docker/issues/99. I do not know how Docker is tracking their work within the store/hub.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jamesstow picture jamesstow  路  6Comments

williamdenton picture williamdenton  路  6Comments

MichaelSimons picture MichaelSimons  路  7Comments

agr picture agr  路  3Comments

cypressious picture cypressious  路  5Comments