Here in this article we will see how we can setup Docker Desktop on Fedora 35 workstation. We will first get a Docker Overview and proceed with the requirements for the Docker Desktop installation and them proceed with the setup for install Docker Desktop.
Fedora 35 workstation
What is Docker
Docker the most loved tool as per the Stack Overflow 2022 Developer Survey – https://survey.stackoverflow.co/2022/#section-most-loved-dreaded-and-wanted-other-tools is used to build, ship and run your code or application packaged as a container irrespective of the infrastructure on which it is run. The containers build locally on a developer desktop machine can be run anywhere either locally, in cloud provider environment or a hybrid environment of both without any change. This increases the developer productivity so they just focus on building their application and also reduces the delivery time to the production environment or end user as its the same container that is going to be deployed in any environment.
Docker is written in the Go programming language and takes advantage of several features of the Linux kernel to deliver its functionality. Docker uses the concept of namespaces in linux which is used to build an isolated environment for a process in this case for a container. It creates a separate namespace for each container so they are isolated from each other.
Benefits of Docker
- Build portable application for fast and consistent delivery
- Scale the deployed application with ease as per business requirement
- Integrate with CICD pipeline for continuous build, deployment and testing of containerized application
Docker uses a client server architecture in which the docker client talks to the docker daemon which does the actual work of managing the images, containers, volumes and networks. Docker client and daemon can run on the same machine or you can connect docker client to a remode docker daemon. Docker client and daemon both communicate using REST API, over UNIX sockets or a network interface. Docker compose is another client that we can use to run multiple dependent containers as a service (ie. an application with postgres db requirement).
Docker Desktop is a collection Docker daemon (dockerd), Docker client (docker), Docker Compose (docker-compose), Docker Content Trust, Kubernetes and Credentail Help components.
NOTE: Commercial use of Docker Desktop in larger enterprises (more than 250 employees OR more than $10 million USD in annual revenue) requires a paid subscription.
Docker Desktop System Requirements
Make sure the following requirements are met.
64 bit kernel with CPU supporting virtualization
[admin@feddocker ~]$ uname -a Linux feddocker.stack.com 5.14.10-300.fc35.x86_64 #1 SMP Thu Oct 7 20:48:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
KVM virtualization support
[admin@feddocker ~]$ lsmod | grep kvm kvm_intel 331776 0 kvm 1019904 1 kvm_intel irqbypass 16384 1 kvm [admin@feddocker ~]$ ls -al /dev/kvm crw-rw-rw-. 1 root kvm 10, 232 Sep 8 13:42 /dev/kvm [admin@feddocker ~]$ sudo usermod -aG kvm $USER [admin@feddocker ~]$ id $USER uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel),36(kvm)
Log out and log back in so that your group membership is re-evaluated.
QEMU must be version 5.2 or newer
[admin@feddocker ~]$ /usr/bin/qemu-system-x86_64 --version QEMU emulator version 6.1.0 (qemu-6.1.0-5.fc35) Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers
systemd init system
Fedora by default supports systemd for service management.
Gnome or KDE Desktop environment
I am using a Fedora 35 workstation with GNOME support.
Have atleast 4GB RAM
Enable configuring ID mapping in user namespaces
Docker Desktop relies on the host being configured to enable the current user to use subordinate ID delegation. For this to be true /etc/subuid (see subuid(5)) and /etc/subgid (see subgid(5)) must be present.
[admin@feddocker ~]$ cat /etc/subuid admin:100000:65536 [admin@feddocker ~]$ cat /etc/subgid admin:100000:65536
NOTE: Docker Desktop for Linux and Docker Engine can be installed side-by-side on the same machine. But it is recommended to stop the Docker Engine while you’re using Docker Desktop to prevent the Docker Engine from consuming resources and to prevent conflicts.
Step1: Setup RPM Package repository
[admin@feddocker ~]$ sudo dnf -y install dnf-plugins-core [admin@feddocker ~]$ sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo [sudo] password for admin: Adding repo from: https://download.docker.com/linux/fedora/docker-ce.repo
Step2: Download Docker Desktop
Download latest stable version of Docker Desktop from HERE.
[admin@feddocker Downloads]$ ls -ltr docker-desktop-4.11.0-x86_64.rpm -rw-r--r--. 1 admin admin 406824593 Sep 8 15:05 docker-desktop-4.11.0-x86_64.rpm
Step3: Install Docker Desktop
[admin@feddocker Downloads]$ sudo dnf install ./docker-desktop-4.11.0-x86_64.rpm ... Installed: at-spi2-atk-devel-2.38.0-3.fc35.x86_64 at-spi2-core-devel-2.42.0-1.fc35.x86_64 atk-devel-2.36.0-4.fc35.x86_64 brotli-1.0.9-6.fc35.x86_64 brotli-devel-1.0.9-6.fc35.x86_64 bzip2-devel-1.0.8-9.fc35.x86_64 cairo-devel-1.17.4-4.fc35.x86_64 cairo-gobject-devel-1.17.4-4.fc35.x86_64 cmake-filesystem-3.22.2-1.fc35.x86_64 dbus-devel-1:1.12.20-5.fc35.x86_64 docker-ce-cli-1:20.10.17-3.fc35.x86_64 docker-desktop-4.11.0-83626.x86_64 docker-scan-plugin-0.17.0-3.fc35.x86_64 fontconfig-devel-2.13.94-3.fc35.x86_64 freetype-devel-2.11.0-1.fc35.x86_64 fribidi-devel-1.0.10-5.fc35.x86_64 gdk-pixbuf2-devel-2.42.6-2.fc35.x86_64 glib2-devel-2.70.0-5.fc35.x86_64 graphite2-devel-1.3.14-8.fc35.x86_64 gtk3-devel-3.24.30-4.fc35.x86_64 harfbuzz-devel-2.8.2-2.fc35.x86_64 libX11-devel-1.7.2-3.fc35.x86_64 libXau-devel-1.0.9-7.fc35.x86_64 libXcomposite-devel-0.4.5-6.fc35.x86_64 libXcursor-devel-1.2.0-6.fc35.x86_64 libXdamage-devel-1.1.5-6.fc35.x86_64 libXext-devel-1.3.4-7.fc35.x86_64 libXfixes-devel-6.0.0-2.fc35.x86_64 libXft-devel-2.3.3-7.fc35.x86_64 libXi-devel-1.7.10-7.fc35.x86_64 libXinerama-devel-1.1.4-9.fc35.x86_64 libXrandr-devel-1.5.2-7.fc35.x86_64 libXrender-devel-0.9.10-15.fc35.x86_64 libXtst-devel-1.2.3-15.fc35.x86_64 libblkid-devel-2.37.2-1.fc35.x86_64 libcloudproviders-devel-0.3.1-4.fc35.x86_64 libdatrie-devel-0.2.13-2.fc35.x86_64 libepoxy-devel-1.5.9-1.fc35.x86_64 libffi-devel-3.1-29.fc35.x86_64 libglvnd-core-devel-1:1.3.3-2.fc35.x86_64 libglvnd-devel-1:1.3.3-2.fc35.x86_64 libicu-devel-69.1-2.fc35.x86_64 libmount-devel-2.37.2-1.fc35.x86_64 libpng-devel-2:1.6.37-11.fc35.x86_64 libselinux-devel-3.2-4.fc35.x86_64 libsepol-devel-3.2-3.fc35.x86_64 libthai-devel-0.1.28-7.fc35.x86_64 libtiff-devel-4.3.0-2.fc35.x86_64 libxcb-devel-1.13.1-8.fc35.x86_64 libxkbcommon-devel-1.3.1-1.fc35.x86_64 libxml2-devel-2.9.12-6.fc35.x86_64 pango-devel-1.49.1-1.fc35.x86_64 pass-1.7.4-3.fc35.noarch pcre-cpp-8.45-1.fc35.x86_64 pcre-devel-8.45-1.fc35.x86_64 pcre-utf16-8.45-1.fc35.x86_64 pcre-utf32-8.45-1.fc35.x86_64 pcre2-devel-10.37-4.fc35.x86_64 pixman-devel-0.40.0-4.fc35.x86_64 qrencode-4.1.1-1.fc35.x86_64 sysprof-capture-devel-3.42.1-1.fc35.x86_64 wayland-devel-1.19.0-2.fc35.x86_64 wayland-protocols-devel-1.26-2.fc35.noarch wl-clipboard-2.0.0-5.fc35.x86_64 xclip-0.13-15.git11cba61.fc35.x86_64 xorg-x11-proto-devel-2021.5-1.fc35.noarch xz-devel-5.2.5-7.fc35.x86_64 zlib-devel-1.2.11-30.fc35.x86_64
There are a few post-install configuration steps done through the post-install script contained in the RPM 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 link from /usr/bin/docker to /usr/local/bin/com.docker.cli.
[admin@feddocker Downloads]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # Added by Docker Desktop # To allow the same kube context to work on the host and the container: 127.0.0.1 kubernetes.docker.internal
[admin@feddocker Downloads]$ ls -ltr /usr/local/bin/com.docker.cli lrwxrwxrwx. 1 root root 15 Sep 8 15:06 /usr/local/bin/com.docker.cli -> /usr/bin/docker
Step4: Start Docker Desktop from GUI
Search for Docker Desktop in Fedora Applications list and launch it.
The first time you launch the Docker Desktop application you will get a pop up to accept the aggrement. Read it and accept it if you are comfortable and launch the application.
For the first it will show Docker Desktop Starting as shown below.
After a few minutes its ready to be used as shown below. You can follow the 2 min tutorial to experiment with Docker Desktop on how it works.
If you skip the tutorial you will get into the Docker Desktop Home Window where in you can manage your containers, images, volumes as shown in below screenshot.
Hope you enjoyed reading this article. Thank you..