Setting up Docker with GPU support for Windows 11

In this tutorial we will show you how to set up Docker with GPU support on your Windows 11 desktop computer. This tutorial assumes that you do not yet have Windows Subsystem for Linux (WSL 2) or Docker desktop installed. Note: installing Docker requires administrator rights on your computer.

If you have Windows 10, Docker does not support GPU usage, but installing Docker should still be possible (at least for recent versions of Windows 10). So if you have Windows 10, you can skip the steps involving Nvidia software.

  1. Install the Nvidia driver. The required driver depends on your GPU. You can install the driver for your specific GPU here.

  2. Install WSL. Open the command window and execute the lines below, this will install WSL with Ubuntu. Although we are using Ubuntu in this tutorial, any flavor of Linux can be installed in this step.

    wsl.exe –-install -d Ubuntu

    wsl.exe –-update

    After installation, make sure to run the commands from the following steps through the Ubuntu terminal.

  3. Install Docker. If you have previously installed Docker, make sure to first remove your current version before installing the new version. If this is the first time that you're installing Docker, you can skip this first line.

    $ sudo apt-get remove docker docker-engine containerd runc

    We will install Docker by setting up the repository. This is the recommended way of installing Docker on Linux according to the Docker docs.

    $ sudo apt-get update

    $ sudo apt-get install ca-certificates curl gnupg lsb-release

    Now we have to add Docker's official GPG key and set up the stable repository.

    $ curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    $ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    We can now perform the actual install of Docker with the following lines.

    $ sudo apt-get update

    $ sudo apt-get install docker-ce docker-ce-cli

    After installation we should verify that Docker has been installed correctly. Let's start Docker and run an example hello world container.

    $ sudo service docker start

    $ sudo docker run hello-world

  4. Post-installation steps. By default we can now only run Docker commands as root user. In order to run Docker without the sudo prefix we need to perform the following steps. Note that although these steps are recommended, they are not obligatory for running Docker on Linux.

    First we create a Docker group.

    $ sudo groupadd docker

    Next, we add our username to the group. Make sure to replace $USER by your own username.

    $ sudo usermod -aG docker $USER

    Now we have to activate these changes to our group and verify that we can use the Docker command without the sudo prefix.

    $ newgrp docker

    $ docker run hello-world

    You should now see a message in your terminal that your installation works correctly. If you obtain any errors, make sure to check out the troubleshooting guide in the Docker docs.

  5. Get the Nvidia container toolkit. This toolkit is required to ensure compatibility between your Nvidia driver and Docker. Run the following commands in your newly installed Ubuntu terminal.

    $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

    $ curl -s -L | sudo apt-key add

    $ curl -s -L$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

  6. You can now install the toolkit through the following lines.

    $ sudo apt-get update

    $ sudo apt-get install -y nvidia-docker2

    After installation it may be a good idea to restart your computer to finalize all installations.

  7. Test a benchmark Docker container. First, start Docker desktop by running the Docker desktop app. To verify that the installation has been successful we will run a benchmark test with a Nvidia Docker image that requires a GPU. When this test is successful, you should see that your GPU is displayed in the output.

    $ docker run --gpus all nbody -gpu -benchmark