DEV Community

Cover image for Install Docker Desktop on Ubuntu
Megha Sharma
Megha Sharma

Posted on

Install Docker Desktop on Ubuntu

General system requirements

To install Docker Desktop successfully, your Linux host must meet the following general requirements:

  • 64-bit kernel and CPU support for virtualization.

  • KVM virtualization support. Follow the KVM virtualization support instructions to check if the KVM kernel modules are enabled and how to provide access to the KVM device.

  • QEMU must be version 5.2 or later. We recommend upgrading to the latest version.

  • systemd init system.

  • Gnome, KDE, or MATE Desktop environment.

  • For many Linux distros, the Gnome environment does not support tray icons. To add support for tray icons, you need to install a Gnome extension. For example, AppIndicator.

  • At least 4 GB of RAM.

  • Enable configuring ID mapping in user namespaces, see File sharing.

  • Recommended: Initialize pass for credentials management.

Have a 64-bit version of either the latest LTS version (Ubuntu Jammy Jellyfish 22.04) or the current non-LTS version (Ubuntu Mantic Minotaur 23.10). Docker Desktop is supported on x86_64 (or amd64) architecture.

For non-Gnome Desktop environments, gnome-terminal must be installed:

 $ sudo apt install gnome-terminal
Enter fullscreen mode Exit fullscreen mode

Install Docker Desktop

Recommended approach to install Docker Desktop on Ubuntu:

    sudo apt-get update
    sudo apt-get install ./docker-desktop-<version>-<arch>.deb
Enter fullscreen mode Exit fullscreen mode

There are a few post-install configuration steps done through the post-install script contained in the deb package.

The post-install script:

Sets the capability on the Docker Desktop binary to map privileged ports and set resource limits.

Adds a DNS name for Kubernetes to /etc/hosts.

Creates a symlink from /usr/local/bin/com.docker.cli to /usr/bin/docker. This is because the classic Docker CLI is installed at /usr/bin/docker. The Docker Desktop installer also installs a Docker CLI binary that includes cloud-integration capabilities and is essentially a wrapper for the Compose CLI, at/usr/local/bin/com.docker.cli. The symlink ensures that the wrapper can access the classic Docker CLI.

Launch Docker Desktop

To start Docker Desktop for Linux, search Docker Desktop on the Applications menu and open it. This launches the Docker menu icon and opens the Docker Dashboard, reporting the status of Docker Desktop.

Alternatively, open a terminal and run:

$ systemctl --user start docker-desktop
Enter fullscreen mode Exit fullscreen mode

After you’ve successfully installed Docker Desktop, you can check the versions of these binaries by running the following commands:

$ docker compose version
Docker Compose version v2.17.3

docker --version
Docker version 23.0.5, build bc4487a

docker version
Client: Docker Engine - Community
 Cloud integration: v1.0.31
 Version:           23.0.5
 API version:       1.42
<...>
Enter fullscreen mode Exit fullscreen mode

To enable Docker Desktop to start on sign in, from the Docker menu, select Settings > General > Start Docker Desktop when you sign in to your computer.

Alternatively, open a terminal and run:

$ systemctl --user enable docker-desktop
Enter fullscreen mode Exit fullscreen mode

To stop Docker Desktop, select the Docker menu icon to open the Docker menu and select Quit Docker Desktop.

Alternatively, open a terminal and run:

$ systemctl --user stop docker-desktop
Enter fullscreen mode Exit fullscreen mode

What is the difference between Docker Desktop for Linux and Docker Engine?

Docker Desktop for Linux provides a user-friendly graphical interface that simplifies the management of containers and services. It includes Docker Engine as this is the core technology that powers Docker containers. Docker Desktop for Linux also comes with additional features like Docker Scout and Docker Extensions.

The Docker CLI can be used to interact with multiple Docker Engines. For example, you can use the same Docker CLI to control a local Docker Engine and to control a remote Docker Engine instance running in the cloud. Docker Contexts allow you to switch between Docker Engines instances.

While it’s possible to run both Docker Desktop and Docker Engine simultaneously, there may be situations where running both at the same time can cause issues. For example, when mapping network ports (-p / --publish) for containers, both Docker Desktop and Docker Engine may attempt to reserve the same port on your machine, which can lead to conflicts ("port already in use").

When installing Docker Desktop, a dedicated “desktop-linux” context is created to interact with Docker Desktop. Docker Desktop automatically sets its own context (desktop-linux) as the current context. This means that subsequent Docker CLI commands target Docker Desktop. On shutdown, Docker Desktop resets the current context to the default context.

Use the docker context ls command to view what contexts are available on your machine.

$ docker context ls
NAME            DESCRIPTION                               DOCKER ENDPOINT                                  ...
default *       Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                      ...
desktop-linux                                             unix:///home/<user>/.docker/desktop/docker.sock  ...
Enter fullscreen mode Exit fullscreen mode

If you have both Docker Desktop and Docker Engine installed on the same machine, you can run the docker context use command to switch between the Docker Desktop and Docker Engine contexts. For example, use the "default" context to interact with the Docker Engine:

$ docker context use default
default
Current context is now "default"
Enter fullscreen mode Exit fullscreen mode

And use the desktop-linux context to interact with Docker Desktop:

docker context use desktop-linux
desktop-linux
Current context is now "desktop-linux"
Enter fullscreen mode Exit fullscreen mode

Top comments (4)

Collapse
 
oliverbennet profile image
Oliver Bennet

would be more precise to add some screenshot of the output. Thats the comment i receive for my posts. Great one by the way.

Collapse
 
meghasharmaaaa profile image
Megha Sharma • Edited

Thanks so much, Oliver! That's a great suggestion – adding screenshots of the output would definitely make the steps clearer. I'll work on incorporating those to improve the post. Glad you enjoyed it!

Collapse
 
kiran_baliga profile image
Kiran Baliga

Great one!

Collapse
 
meghasharmaaaa profile image
Megha Sharma

Thank you, Kiran!