Is Docker Desktop Just a GUI?

ajeetraina

Ajeet Singh Raina

Posted on September 17, 2024

Is Docker Desktop Just a GUI?

When interacting with tons of engineers, I often hear a common question: “Why should I use Docker Desktop? I’m already comfortable using the CLI, and I don’t need a GUI.”

This perception—that Docker Desktop is just a graphical user interface (GUI)—is widespread, but it misses the broader picture. Docker Desktop isn’t just a UI; it’s a comprehensive development platform that integrates a suite of tools, services, trusted content, and automations. These features are designed to streamline development, enabling faster and more secure delivery of applications. In this blog, we’ll explore why Docker Desktop is so much more than just a GUI and why it has earned its place as the #1 most-used Most-Used, Desired and Admired developer tool in Stack Overflow's 2024 Developer Survey.

Image1

Docker Desktop: More Than Just a UI

The graphical interface is a core aspect of Docker Desktop, but that’s just one part of the picture. Docker Desktop offers a wide range of functionalities that go beyond the visual experience, making it an essential tool for developers who want to work efficiently, securely, and with greater flexibility.

Docker Desktop integrates a comprehensive set of tools and services, allowing developers to automate and optimize their workflows from development through deployment.

Addressing Key Developer Needs: Speed, Security, and Choice

Docker consistently ranks highly in the Stack Overflow community because it effectively addresses three key concerns: speed, security, and choice. Let’s break down how Docker Desktop tackles each one.

I. Speed

For developers, time spent on setup and configuration is time taken away from writing code. Docker Desktop helps speed up this process through various features:

1. Docker Init

dockerinit

Automatically generates Dockerfiles and docker-compose.yml files for popular programming languages like Python, Node, and Go, reducing the time it takes to start new projects.

Docker init is a CLI command that was introduced in Docker Desktop to simplify the process of initializing a new project to run in a Docker container. When you run the docker init command in your project directory, it will guide you through the creation of the necessary files for your project with sensible defaults. These files include:

  • .dockerignore
  • Dockerfile
  • docker-compose.yaml

The docker init command also allows you to choose the application platform that your project uses and the relative directory of your main package. Additionally, it can generate Docker assets for your project using the Docker Scout CLI and provides an adminless Mac install flow that does not require admin privileges. Do check: Introducing Docker Init: Generating Docker Assets for Your Projects

2. VirtioFS Support

Reduces database import times by 98%, significantly speeding up local development

virtiofs

VirtioFS is a high-performance file system that can be used with Docker containers to improve their performance.In this post, we will explore what VirtioFS is, how it works, and the benefits of using it with Docker Desktop. Docker Desktop uses VirtioFS to mount the host file system in the container as a shared file system. This allows the container to access files on the host machine directly, without the need for a network share or a volume mount. Do check: Unlocking High Performance with VirtioFS in Docker Desktop

3. Docker Compose File Watch

Syncs local code changes with containers in real-time, eliminating manual restarts and updates.

File Watch

Docker Compose Watch is a file watch command that automates the update process for running Docker Compose services as developers edit and save their code. By monitoring specified file or directory paths on the host machine, Docker Compose Watch detects changes and performs corresponding actions within the service container. This capability enables developers to instantly see the impact of their code changes without manually triggering image builds or container restarts. Do check: What is Docker Compose Watch and what problem does it solve?

4. vpnkit to gVisor Networking:

Improves container-to-host networking performance by up to 5X.

gVisor

In Docker Desktop 4.19, Docker introduced a major enhancement to boost VM networking performance on macOS Ventura and later versions. By replacing VPNKit with the gVisor TCP/IP stack, this update delivers a 5x increase in container-to-host networking speed. This change significantly improves communication between containers and external servers, making it especially valuable for developers who rely on frequent network operations like downloading packages via npm install or apt-get.

This update not only optimizes container-to-host communication but also enhances overall efficiency, providing a faster, more responsive development environment on macOS. Do check: Docker Desktop 4.19: Compose v2, Moby Project Update, and New Language Support

5. Docker Build Cloud

Docker builds. 39x faster. Executable in the cloud.

dockerbuildcloud

Docker Build Cloud is a service that lets developers build their container images faster, both locally and in CI. Builds run on cloud infrastructure optimally dimensioned for your workloads, with no configuration required. The service uses a remote build cache, ensuring fast builds anywhere and for all team members. It solves the problem of slow build times by running builds locally and in the cloud. This means that developers can take advantage of the powerful hardware and resources that are available locally and in the cloud, which can significantly speed up the build process. Do check: Supercharge your Arm builds with Docker Build Cloud: Efficiency meets performance

II. Security

Security is a top concern for developers, especially with increasing demands for secure coding practices. Docker Desktop provides a set of security-focused tools that seamlessly integrate into the development workflow:

1. Docker Scout

Automatically scans for vulnerabilities and recommends fixes while you code, allowing you to address security concerns early in the development process

dockerscout

Docker Scout is a collection of software supply chain features that appear throughout Docker user interfaces and the command line interface (CLI). These features provide detailed insights into the composition and security of container images.

Docker Scout is designed with developers in mind and integrated into Docker. With Docker Scout, spend less time searching for and fixing vulnerabilities, and more time developing your code. Docker is building Docker Scout to sit as a layer on top of the Docker ecosystem to help developers build and maintain a secure software supply chain. Right now, Docker is focussed on helping with vulnerability remediation; we think our CVE-to-package matching (using PURLs to help avoid false positives) and our SBOM-to-CVEdb matching (no need to rescan) are both nice improvements to the current Developer experience. Do check: A First Look at Docker Scout – A Software Supply Chain Security for Developers

2. Attestations

Automatically generates Software Bill of Materials (SBOMs) and SLSA Provenance, ensuring that security credentials are embedded directly into your image.

attestations

Attestations in Docker describe how an image was built and what it contains. They are created at build-time by BuildKit and become attached to the final image as metadata. The purpose of attestations is to make it possible to inspect an image and see where it comes from, who created it and how, and what it contains. This enables you to make informed decisions about how an image impacts the supply chain security of your application. It also enables the use of policy engines for validating images based on policy rules you've defined.
Do check: Attestations

III. Choice

Developers appreciate flexibility and choice in their toolsets, and Docker Desktop delivers:

1. Docker Extensions

Allows developers to seamlessly connect their favorite development tools to your application development and deployment workflows

Imageqq

With over 700 Docker Extensions available on Docker Hub, Docker Desktop enables developers to customize their environment with tools tailored to their specific needs, ranging from Kubernetes development to security enhancements.

Docker Extensions lets you use third-party tools within Docker Desktop to extend its functionality. It allows developers to seamlessly connect their favorite development tools to your application development and deployment workflows. Do check: A Curated List of Docker Extensions

2. Docker-Sponsored Open Source Projects

Developers can access more than 600 open-source projects for free via Docker Hub, fostering collaboration and innovation.

dsos

Docker indeed supports open-source projects through its Docker-Sponsored Open Source Program. This program publishes and maintains Docker Open Source Images on Docker Hub. These images are part of a special program and have a special badge on Docker Hub, making it easier for users to identify projects that Docker has verified as trusted, secure, and active open-source projects.

The Docker-Sponsored Open Source (DSOS) Program provides several features and benefits to non-commercial open source developers. The program grants the following perks to eligible projects:

  • Repository logo
  • Verified Docker-Sponsored Open Source badge
  • Insights and analytics
  • Access to Docker Scout for software supply chain management
  • Removal of rate limiting for developers
  • Improved discoverability on Docker Hub

Do check: Docker-Sponsored Open Source Program

3. Multiple Architectures

A single docker build command can produce images compatible with different architectures, including x86, ARM, RISC-V, and even IBM mainframes, making Docker Desktop a versatile solution for cross-platform development.

Docker provides support for building images for multiple architectures. This is particularly useful when you want your applications to run on different types of hardware. The architectures that are highly recommended for your extension are linux/amd64 and linux/arm64

By default, Docker Desktop's builder doesn't support building multi-platform images. You can enable this feature by switching to a different driver or turning on the containerd image store.

Do check: Build multi-platform images

4. WebAssembly

wasm

The Docker Desktop Wasm feature allows you to run Wasm applications alongside your Linux containers. This means that you can use Docker to build, run, and share both Wasm and Linux applications.

To use the Docker Desktop Wasm feature, you need to enable the Wasm feature in the Docker Desktop settings. Once the Wasm feature is enabled, you can create and run Wasm containers just like you would any other Docker container.

Docker sees Wasm as a complementary technology to Linux containers. This is where developers can choose which technology they use (or both!) depending on the use case. And as the community explores what’s possible with Wasm, the effort is to make Wasm applications easier to develop, build, and run using the experience and tools you know and love. Docker solves the traditional problem – it works on my machine, works on yours and in production flawlessly. Docker Desktop and CLI can now manage both Linux containers and Wasm containers side by side.

The Wasm feature is still in Beta. We recommend that you do not use this feature in production environments as this feature may change or be removed from future releases.

List of Supported Wasm Runtimes

Docker Desktop support the following Wasm runtime:

  • Slight: Slight is a lightweight Wasm runtime that is designed to be fast and efficient. It is a good choice for running Wasm workloads that require high performance.
  • Spin: Spin is a serverless Wasm runtime that is designed to be easy to use and deploy. It is a good choice for running Wasm workloads that are event-driven or that need to be scaled horizontally.
  • WasmEdge: WasmEdge is a full-featured Wasm runtime that supports a wide range of features. It is a good choice for running Wasm workloads that require a high degree of flexibility and control.
  • Wasmtime: Wasmtime is a Wasm runtime that is designed to be compatible with the WebAssembly specification. It is a good choice for running Wasm workloads that need to be portable to different environments.

Conclusion

Docker Desktop is far more than just a GUI; it’s a comprehensive development platform that enhances your workflow with speed, security, and choice. Its continued recognition as the #1 most-used developer tool in Stack Overflow’s 2023 Developer Survey reinforces its value to the developer community.

For those who are still asking, “Why should I use Docker Desktop when I’m comfortable with the CLI?”—the answer is simple. Docker Desktop offers a robust set of tools and automations that go beyond what the CLI alone can provide. It empowers developers to work smarter, faster, and more securely, making it an indispensable tool in modern development environments.

We’re grateful to the Stack Overflow community for continuing to recognize Docker’s contributions to the developer ecosystem and look forward to helping developers build the future.

💖 💪 🙅 🚩
ajeetraina
Ajeet Singh Raina

Posted on September 17, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Is Docker Desktop Just a GUI?
docker Is Docker Desktop Just a GUI?

September 17, 2024