Docker for Windows used in build farms

We need to use Docker for Windows in our build system. When setting up the machines, we are faced with several limitations – for instance, trying to deploy several machines is not “automatable”, because there’s an extensive need to configure things through the UI.

Two examples:

  • -Sharing drives cannot be done any other way than via the UI
  • -A Docker pop up will show at start up and request user feedback, and while that happens, service does not start

These are just two examples showing that Docker for Windows is not compatible with unattended/automated usage.

Are there plans to change this?
Making sure that any feature can be controlled via the UI AND via command line would really help!

This is not limited to build system usage; when setting up a tool for developers, we have also encountered similar limitations.

2 Likes

We ran into the same issue for our CI use as well.

It’s quite annoying that we have to manually log in on over 100 windows build machines to get rid of that pop up :frowning:

And also 2 of our engineers have spent many work-hours trying to find a way to automate the drive share :frowning:

1 Like

Same issue here.

This lack of automation made us choose to work with docker toolbox and virtualbox instead of docker for windows. I know you guys advertise it as being super easy to use but for me it proved not to be and apparently I’m not the only one. It would be really helpful if you could do something about it.

2 Likes

It sounds like you are using the wrong product for what you want to accomplish. Are you trying to run Linux or Windows containers on these Windows boxes?

If you are looking to run Windows containers then installing Docker on Windows Server 2016 is absolutely scriptable. In fact the Windows server that I run in my docker swarm are all Server 2016 Core, which does not really have a standard UI experience, everything is done via powershell.

With Docker on Server 2016, there is no need to “share drives” as the docker daemon runs natively on the server.

1 Like

Some of us can’t use Windows Server, because SDK’s we use only work on Windows 10 and 7.

It works on Windows 10, but you cannot use it on Server 2016?

Also, you are talking about scripting build servers, are these SDK’s using as part of the build process or included in the containers?

— It works on Windows 10, but you cannot use it on Server 2016?

Just one example. PS4 development/build have these OS restrictions:

Windows 7 Professional 64-bit ( English / Japanese )
Windows 8.1 Pro 64-bit ( English / Japanese )
Windows 10 Pro 64-bit ( English / Japanese )

— Also, you are talking about scripting build servers, are these SDK’s using as part of the build process or included in the containers?

We’re using several different SDKs as part of the build process.

Interesting…

I have not personally tried it, but it is quite possible that the Server 2016 Docker-EE instructions could still work on Windows 10.

Indeed. But even if it worked, if it’s not officially supported, there’s a big risk in going that way. You may end up one morning with an update that breaks your whole build pipeline. But thanks for suggesting.

I would not think the risk is as high as you think. Are you running your windows 10 boxed with deferred updates?

Docker does not auto update, you would have to manually update it via powershell.

I’d like to add we’re also in the same situation.
We’re all using Win10 and Visual Studio 2017 + .Net Core 2.0, targeting Linux containers.
Having that popup after a reboot to blocks the startup of docker is a real pain on the build machines, as is the lack of easy automation for the shared drives.
And with passwords changing every few months, those shared drives can become invalid quite often.

@papazark, is having a windows 10 build machine a dependency of yours like it is for @gdouaire?

We are building .Net Core 2.0 and Framework 4.5.2 with a mix of Windows and Linux containers, our automated linux builds are being done on Ubuntu 16.04 virtual servers using, I just created a bash script that calls docker-compose build and docker push for out linux servers to make our linux containers.

Yes, having windows 10 is a strong dependency for us, since we also run tools (code generators) during the build process that involves the client part.

Hopefully, someone from Docker will read this. This post is about feature requests, obviously several people are in this use case – needing an automatable Docker for Windows that can be run unattended for pipelines and tool chain.

It’s almost feasible, almost there, short of a couple of major flaws.

Adding an unattended & automatable & scriptable mode would not remove anything from the ordinary UI-slash-clickfest experience. if that’s what’s the average user wants. But it would be worth a lot for lot of other people.

You might get better results on the guthub repository: https://github.com/docker/for-win/issues

1 Like

Thanks for the hint!

Docker for Windows 10 is not supported for Production use, only Docker for Windows 2016, as mentioned above by @cmyerswerktek

Docker on Windows 2016 is a whole new experience and much more suitable for automated scenarios like CI agents.

We have quite a lot of Windows 2016 Docker hosts running build containers with VS Build Tools, SDKs, .NET Frameworks etc inside. microsoft\windowsservercore is in fact a strip-down version of Windows 10, so you can have all your dependencies there - inside a container.
That’s how we do it and it works great for us.