Search code examples
dockerwindows-serveroctopus-deploydocker-for-windows

How to start Docker daemon (windows service) at startup without the need to log-in?


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 and com.service.docker at boot with eleveated priveleges.

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.

    Create Task

    now click trigger tab and add new trigger. on the new trigger page select "At startup" and click OK.

    enter image description here

    finally, click on the actions tab and add a new Action that run "Docker windows" shortcut that run docker daemon on windows.

    Create Action

    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.