The article describes various ways to install the Docker daemon on Windows Server which enables you to run Windows containers only. The binaries for Windows do not contain Docker components such as buildx, docker scan, and docker-compose. If you are running Windows 10 or 11, it is recommended to install Docker Desktop instead. This comes with a cost and this is the reason why I created this guide to show you how to install the Docker Engine alone. Docker has announced changes to their pricing and subscriptions which require a paid subscription for users outside of personal, education, and small business use. Binary packages on Windows include both dockerd.exe and docker.exe. On Windows, these binaries only provide the ability to run native Windows containers (not Linux containers). Kindly refer to these related guides: How to create and deploy a local Registry Server with Docker Image, how to Pull your first Nginx Container Image from Docker Hub and deploy it to your local machine, Azure DevOps and GitHub integration for Docker and Kubernetes deployment, how to create a static pod in Kubernetes, and how to install, register and start GitLab Runner on Windows.
Currently, due to licensing issues, you may want o install the Docker Engine only instead of the the Docker Desktop. The Docker Desktop helps you build, share, and run containers easily on Mac and Windows as you do on Linux. Docker handles the complex setup and allows you to focus on writing the code. To pruchase a Docker Desktop license, kindly head over to this licensing page. Kindly refer to this guide "how to install and uninstall Docker Desktop on Windows 10 and Windows Server".
Docker Engine is available on a variety of platforms, Linux, macOS, and Windows 10 through Docker Desktop, and as a static binary installation. Docker can be installed via binaries and this is currently not recommended in production, except in testing environments only. This is because they are not updated automatically with security updates. Manual updates will need to be installed whenever there is a new release of Docker. They will also not include all functionalities provided by the dynamic packages such as buildx, docker scan, and docker-compose.
Docker Engine has three types of update channels, stable, test, and nightly:
- The Stable channel gives you latest releases for general availability.
- The Test channel gives pre-releases that are ready for testing before general availability (GA).
- The Nightly channel gives you latest builds of work in progress for the next major release.
If you are running Windows 10 or 11, it is recommended that you install Docker Desktop instead. Therefore, it is recommended to install Docker Desktop instead for Windows and Mac. This is a little bit different for Linux. You may want to see these related guides: What is Windows Subsystem for Linux (WSL), how to install WSL on Windows Server via Server Manager and PowerShell, and how to install WSL on Windows 10.
Ensure the prerequisites are met, else Docker will never be able to start. Containers are a technology for packaging and running Windows and Linux applications across diverse environments on-premises and in the cloud. Containers provide a lightweight, isolated environment that makes apps easier to develop, deploy, and manage. Kindly refer to this guide "how to install and uninstall Docker Desktop on Windows 10 and Windows Server".
Method 1: Install server and client binaries
Download the static binary archive. Go to https://download.docker.com/win/static/stable/x86_64 and select the latest version from the list. Next, run the following PowerShell commands to install and extract the archive to your program file
PS C:\> Expand-Archive /path/to/<FILE>.zip -DestinationPath $Env:ProgramFiles
Expand-Archive cmdlet extracts files from a specified zipped archive file to a specified destination folder. An archive file allows multiple files to be packaged and optionally compressed, into a single zipped file for easier distribution and storage.
Therefore, we will find the following files in the destination specified as shown below.
Register the service and Start the Docker Engine: The Docker daemon now supports an option to register it as a service as well. The commands below will help o
PS C:\> $Env:ProgramFiles\Docker\dockerd --register-service PS C:\> Start-Service docker
Perform a Test Image
This command downloads a test image and runs it in a container. When the container runs, it prints a message and exits.
PS C:\> $Env:ProgramFiles\Docker\docker run hello-world:nanoserver
Method 2 – Create a new Docker folder and download the docker daemon
The commands below will create a new Docker folder in Program Files and download the docker daemon and client binaries in this directory. The last command will add the directory in the Path environment variable.
New-Item -Type Directory -Path 'C:\Program Files\docker\' Invoke-WebRequest https://aka.ms/tp5/b/dockerd -OutFile $env:ProgramFiles\docker\dockerd.exe Invoke-WebRequest https://aka.ms/tp5/b/docker -OutFile $env:ProgramFiles\docker\docker.exe [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)
Next, we will have to register The Docker daemon now supports an option to register it as a service as well. Kindly use the same command discussed in
Method 1 to register and start the Docker Engine.
Upgrade static binaries
To upgrade your manual installation of Docker Engine, first, stop any
dockerd.exe processes running locally, then follow the regular installation steps to install the new version on top of the existing version.
I hope you found this blog post helpful. If you have any questions, please let me know in the comment session.