Built atop Docker Engine—our open-source container runtime—Docker Desktop is ideal for developers needing greatly expanded Docker functionality, regardless of experience level. Docker Desktop is ready to use out of the box. It packages together Docker’s CLI, Docker Compose, Kubernetes, and other tools to streamline application development. Docker Desktop’s quick installation and OS agnosticism have also boosted its popularity amongst developers.
Discovering and fully grasping every feature within Docker Desktop can take time, since there’s no clear starting point. There are plenty of powerful functions! However, we’ve chosen to highlight some key features you’ll find most useful within Desktop. Based on community and developer feedback, here are our top five Docker Desktop features that’ll improve your development experience.
1) Simplified Permissions Management
Managing and understanding permissions can be challenging while working with containers. You have to worry about how ownership and user IDs impact the security of your environment—and how you interact with files generated locally.
Unfortunately, it’s possible for the container user and the host user to differ. Developer Juan Treminio highlights how running a Docker container with PHP Composer support and a PHP image—while technically effective—produces read-only files. This isn’t great when you need complete file access. Accordingly, while files and directories may be root-owned, you might avoid using root for various reasons. Relying on sudo is also inefficient. Finally, you must consider docker groups and how user permissions are inherited. Unweaving this tangled web is challenging while mounting volumes.
Docker Desktop erases these file ownership concerns. It automatically applies your file mappings while mounting volumes. Accordingly, Desktop updates user and group ownership to match what your container needs—and what you’re using on your host machine. Doing this manually can be somewhat tedious.
Desktop lets you own your files as your own machine user. This grants you full access, and empowers you to work without stumbling over permissions hurdles. Finally, Docker Desktop gives you privilege escalation protection while running in a VM.
2) Powerful File Sharing Capabilities
File sharing remains a core feature within Docker Desktop—especially while communicating between host machines and containers. Making these file types accessible across your Docker environment is crucial, since they’ll power your applications and their runtime configurations:
- Source code
- Smaller quantities of media assets, like images or videos
- Build artifacts
- Database backends
You might also reuse existing container data with newer containers. This is useful for streamlining new deployments and applying optimizations right out of the gate.
Unfortunately, we often encounter compatibility issues with filesystems—which can differ between your container and your computer. Transfers between hosts and containers can also hurt performance at scale.
Thankfully, Docker Desktop side steps these issues in a few ways. First, Docker Desktop supports named volumes. These exist within the VM filesystem itself, and are fast on all workstations regardless of OS.
Second, using Windows Subsystem for Linux (WSL 2) is another great way to unlock extra file sharing performance. However, just make sure you’re storing your files within the Linux filesystem.
Third, macOS users now have an experimental new implementation called virtiofs at their disposal. Depending on workload, this feature can boost execution speeds by up to 98%. This enhancement topped our list of GitHub requests, and we think it’ll positively impact numerous users.
Finally, Docker Dashboard’s visualizations help you manage critical volumes. Just like with containers and images, Desktop will display all existing volumes in a list. Mounted volumes are labeled as “in use” (so you can tell when they’re active), while idle volumes remain untagged.
You’ll never forget when you created a volume. Volume sizes are clearly listed. You can also create or delete volumes with just a few clicks, helping you free up disk space easily when volumes are no longer in use. Meanwhile, accomplishing this with Docker Engine would require multiple CLI commands, and—while not too challenging—would take more time and care. Docker Desktop provides that consolidated management functionality without requiring supplemental, open-source tooling.
3) Rapid Deployment of Single Kubernetes Node Clusters
Kubernetes also has a reputation for complexity. While the system is highly in-demand, the setup process isn’t always simple.
Docker Desktop gives you a local Kubernetes cluster and handles all of the management legwork. You don’t have to worry about updating components, nor performing any sort of additional maintenance. After installing Desktop and clicking its app icon, choosing “Settings” will open the Dashboard, with Kubernetes listed in the sidebar. You can easily launch the Kubernetes pane from here:
Docker Desktop’s interface is uncluttered, making it easy to navigate Kubernetes configurations.
Simply clicking the “Enable Kubernetes” checkbox will download all dependencies in the background. From there, you’re good to go! This saves you from choosing your own container runtime and needing other cluster-creation tools.
For more on deploying Kubernetes via Docker, please view our documentation page.
4) Development Environments (Preview)
Though it hasn’t yet graduated to general availability, Development Environments is a tentpole collaboration feature within Docker Desktop. You can access this preview from the sidebar. This lets you quickly join new projects.
Developer Environments packages all development components into a single development environment—letting you contribute with a few clicks. Say goodbye to the frustration of “it worked on my machine,” and easily manage and maintain a development environment that works across OSes. Dev Environments allows you to:
- Easily start Dev Environments locally or from a GitHub URL
- Set up a compose application as a Dev Environment
- Run environments cost-free by using local resources, instead of purchasing cloud resources
Make sure to install Docker Desktop 3.5.0 or higher before attempting to use Development Environments, though we always recommend being on the latest version. You’ll also need Git, Visual Studio Code (VSC), and the VSC Remote Containers Extension.
Dev Environments also allow you to seamlessly work on multiple projects and branches without any local conflicts. You can:
- Open running containers in a VS Code terminal—allowing you to make code edits, push or pull code to your repo, and switch between branches
- Create development environments from branches and tags, and run them simultaneously to easily compare versions of work-in-progress code
- Edit code and commit any changes in real time
Synchronization and transparency are two chief benefits of Development Environments. Say goodbye to merge conflicts and moving repeatedly between branches to perform code review.
5) Docker Extensions (Coming Soon)
Finally, Docker Desktop will soon welcome Docker Extensions into the fold. We’re inviting users to test drive new integrations from partners and community contributors after DockerCon 2022. Extensions automatically leverage Desktop’s Dashboard UI. They can display detailed information about your containers, local system, volumes, and more. We also encourage the Docker community to bolster Desktop’s functionality through Extensions.
Development takes a lot of time under the best of circumstances. Repeatedly jumping between tools can waste valuable time. Extensions let you stay within Docker Desktop and tackle multiple tasks without switching windows.
We can’t wait to release our Docker Extensions SDK alongside the May preview. This’ll allow organizations and customers to build their own functions into Docker Desktop. Join us for DockerCon to learn more about Extensions, which we’ll cover more deeply before launching the beta.
Stay Tuned for More!
Docker Desktop is continually evolving. We’re investigating ways to add features based on your feedback and our product roadmap. Check out our current feature requests, open your own Desktop issues, and even vote on features you’d like to see via our public roadmap. Your feedback means everything, and we’d love to hear your thoughts.
Join us for DockerCon2022 on Tuesday, May 10. DockerCon is a free, one day virtual event that is a unique experience for developers and development teams who are building the next generation of modern applications. If you want to learn about how to go from code to cloud fast and how to solve your development challenges, DockerCon 2022 offers engaging live content to help you build, share and run your applications. Register today at https://www.docker.com/dockercon/