We have Docker for Windows installed on a Windows Server 2016 Datacenter box.
We use this box as a build agent for our docker containers.
When we try to connect to this box via the daemon to build a container, we get an error message indicating the daemon is not running (at end of post).
However, if I login to this box using my AD Account, the daemon starts, runs, and then I can connect and do everything I need to do.
Is there a way to make daemon start at boot without requiring the user to be logged in? The service only seems to run if a user is logged in.
Error message:
error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.37/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=[NameRemovedForPrivacy]&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=[keyRemovedForPrivacy]&shmsize=0&t=[serverNameRemovedForPrivacy]&target=&ulimits=null: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
What I have tried:
- Verified Docker was listed in Windows Services and configured to start automatically.
- Created entries in Windows Task Scheduler to execute docker
executable
andcom.service.docker
at boot with eleveated priveleges.
I can confirm eckes' comment above. Nothing seems to work. I was very diligent with setting up the Task Scheduler to run under the SYSTEM user with elevated priveleges, etc. and still no luck.
I did find one solution that requires third party software. The software AlwaysUp allows Docker to run at startup without the need to login.
I followed the instructions, except rather than Docker Tools as the executable to run, I pointed to
reference\dockerd.exe
. Restarted the server, and sure enough I can now connect to my remote daemon.I recommend this approach as the simplest solution.
The best solution for windows server is to use
Task Scheduler
to create task that run "Docker Desktop" app in case of system startup.to do that search "Task Scheduler", click on "create task...".
on the new tab specify a name for the task and choose "Run whether user is logged on or not" radio button and "Run with highest privilege" checkbox. at the end of page select appropriate windows type.
now click trigger tab and add new trigger. on the new trigger page select "At startup" and click OK.
finally, click on the actions tab and add a new Action that run "Docker windows" shortcut that run docker daemon on windows.
As docker starting, pass 1 minute and container starting may take a few time (in my case 4 minute) wait a few minutes and then test whether your docker is running.