Docker Desktop - should I pay?
Tags: docker, macos, windows, devops
Published: 2021-09-13 11:40:40

#### Executive Summery

You are **not required to subscribe to a payed license** if your company has fewer than 250 employees and less than $10 million annual revenue - stop reading now! For anyone who needs to argument why it is worth to pay or is willing to invest in alternatives will find some information or read the great [FAQs](https://www.docker.com/pricing/faq/) provided by Docker.

### History

Docker is the result of a startup during the Y Combinator Summer 2010 and was not open-sourced until March 2013.

My own involvement started 2014 when a group of people outside docker created a micro Linux distribution [boot2docker](https://github.com/boot2docker/boot2docker) to provide a better integration of docker on MacOS. 

At that time I have been using different kind of virtual machines to manage different development environment but with the addition of handling multiple PHP and NodeJS version it became really difficult to keep all this environment up to date. 

With docker containers, the documented way to replicate complex production setups locally made me do the switch and up to now this is still my favoured feature!

boot2docker provided a Bash based wrapper which allowed simplified handling for the creation of the [VM VirtualBox](https://www.virtualbox.org) to run the docker daemon. I learned a lot about the complexity by fixing bugs and extending the existing functionality of the wrapper. Based on the popularity of the tool in the MacOS commuity Docker Inc added [Sven Dowideit](https://github.com/SvenDowideit) from their team to this project and I became a maintainer on the project. Based on the move inside docker to rewrite everything in docker, I also helped porting the existing bash-cli wrapper to golang [boot2docker-cli](https://github.com/boot2docker/boot2docker-cli).

> I invested roughly 2 month of unpaid work into these projects to make them suitable to my needs.

The release of the first stable release of [Docker for Mac](https://docs.docker.com/desktop/mac/previous-versions/#docker-for-mac-1120-2016-07-28) June 2016 made a huge different. From know on there was a simple install process to handle the installation of all the tools (e.g. docker-cli, docker-machine, docker-compose) and a regular patched Linux distro with an up to date docker engine. No more lost or broken data containers and a much easier handling of binding and sharing the file system. 

Only a couple of month later, Sept. 2016 the dedicated team at docker replaced the VM still based on [VirtualBox](https://www.virtualbox.org) with the first HyperKit implementation.

If you look at the release pages of [Docker for Mac](https://docs.docker.com/desktop/mac/previous-versions/#stable-releases-of-2016) and [Docker Desktop](https://docs.docker.com/desktop/mac/release-notes/) you can see how much work has been done since 2016 and where the value is which is not so easy to replicate. All information on history is provided by [Wikipedia](https://en.wikipedia.org/wiki/Docker_(software)).

### Use Cases

**There are many use cases supported by docker:**
* Local Development Setup
* Local Server simulation
* Complex Application Setup
* Legacy Application
* Kubernetes

and there are many more.

> The use case which is target by **Docker Desktop** is *local development* and this is where it shines. Many of the alternative options will not provide you with a similar smooth experience starting with first time installation and later regular updates.

If you still think you need an alternative the [Docker'S New Licensing Changes Podcast](https://share.transistor.fm/s/b42e9465) by Bret Fisher  discusses many other question related to licensing and alternative options but none matches the features provided by Docker Desktop. 
The website of the Episode will list some links to other blog posts which might provide you with insides on how to install alternative options and the complexity of this kind of solution.

### Arguments for Docker Desktop

Most of this arguments are valid for single developers and a company with many developers.

* Installer providing 
    * LinuxKit mini VM on HyperKit (MacOS) or Host + WSL2 VM support (Windows)
    * Integration with OS to share ports 
    * Local Bind mount file system
    * Volume mounts (osxfs, ntfs)
    * GUI to setup VM and docker engine
    * VPNKit for handling client VPN connections
    * docker engine, docker client, docker compose,...
    * Secret storage based on OS mechanism
    * macOS Apple Silicon (M1) support
    * ssh-agent forwarding
* GUI providing autom. updates of all tools
* Tested integrations with VS Code and many other tools

If you look at the alternatives you will quickly see that you need an extra patch to get some stuff work with the MacOS M1 chip ([Lima manual install steps for ARM Mac](https://github.com/lima-vm/lima#getting-started)) and even there are installers based on the excellent  [Homebrew](https://brew.sh) package manger there is no guarantee that a full setup of different tools will not break after a simple update.

> If Docker Desktop is a tool you use on a daily base for your work think twice and if you are honest to yourself or to your managers you can provide more to your company by doing work and not fixing tools.

If you still not convinced please plan the additional time you will spend on setup and maintenance.