Docker daemon on Ubuntu. pull windows containers or create my own?


Ubuntu 16.10 x86-64
docker info: Server Version: 1.13.1

Is it possible to pull Windows images, for example, Microsoft/mssql-server-windows-express? Every time I tried this I got the ‘unknown blob’ error.

If I can’t pull this images, is it possible to create my Windows container to execute in a Linux daemon?

Vitor Jr.

It’s not possible to execute Windows containers on a Linux kernel. Windows containers require the Windows kernel.

The question about pulling images still stands. This is not the same functionality as executing containers.
I’m in an environment where our Docker Datacenter (including the DTR) are running on Linux. We don’t expect to run windows containers, but we want to be able to pull and tag and push any/all images. We’re running docker 1.13.1. Is this capability going to become available?

I’m not sure, but I’m certainly no expert on Windows containers. If you will be using Windows images (and presumably targeting some Windows servers for deployment), why not build+tag+push on said Windows servers?

Our automation/CI/CD infrastructure is built on Linux.

You won’t be able to docker build Windows images on Linux though, since a build is just a sequence of docker run + docker commit. If you want CI/CD for Windows images you pretty much have to build on top of Windows for that portion.

I am aware that I cannot build Windows images on Linux. The question remains about pulling images. Our registries on Linux hosts are part of the CI/CD workflow. Their authentication services run on Linux. Registries only store images in addition to the registry/auth specific containers they run. People pull from them and push to them, and in some cases, we pull or push from the Linux host running the registry.
To reiterate, I’m not asking about docker build or docker run, but docker pull. Since you are staff, can you please find someone who can address this query? Will it ever become an option, or is it now up to the customer to replicate infrastructure, duplicating licensing costs, and re-implement in Windows, hoping it doesn’t break the way the last Windows Docker update does?

Unfortunately, a Linux system won’t be able to handle Windows image nor vice-versa.

The reason is that when you docker pull an image, the image layers are unpacked into the graph-driver on the system so that the image is ready to run at a moments notice. Docker running on Linux will not be able to unpack Windows filesystem layers because the Windows and Linux filesystems are not compatible.

I agree that this is an annoying limitation. It’s caused by the architecture of Docker image distribution, and I don’t think anyone is working on improving this.

1 Like

Perfect response, directly answers the question - thanks!