Docker as a DevTool Platform

Dec 16, 2022

Docker Extensions is a new beta feature in Docker Desktop. It allows you to run third-party tools in Docker Desktop, complete with a simple React-based GUI. For example, you might run the Tailscale extension, which sets up a Tailscale node inside Docker for your tailnet. Or you might run one of the many GUI dashboards from the Marketplace.

Of course, there's nothing new about Docker Extensions in terms of functionality – nothing is stopping you from passing through an API token to a Docker container that's running Tailscale. Or running a Kubernetes pod with the right configuration for a local daemon-like service. But for local development, do you want to manage those extra resources yourself? Sometimes it's nicer to break outside the terminal configuration (vs. environment variables) and dashboards (vs. text or web-hosted).

Extensions brings Docker Desktop much closer to becoming a DevTool platform. The marketplace might turn out to be a great distribution channel for third-party apps to the over 3 million monthly-actives on Desktop. And it might help codify tricky container configurations for common local development tasks (e.g., I want a local Kubernetes Postgres deployment that is persisted somewhere on the host filesystem).

When I was developing minikube, we added an "addon" feature, which was simple configuration that would be auto-deployed on startup. It was a simple but powerful way to extend functionality – e.g., we used it to deploy the Kubernetes dashboard by default.

Later, when I was working on skaffold, we often thought about whether or not we should add a GUI component (many of the tools that copied us ended up adding one). While I don't think it would have been the smart choice at the time, you could imagine a tool like skaffold making a great Docker Desktop Extension. Searchable logs, toggles for re-building or deploying specific services, and a place for user-specific configuration overrides.

Extensions is just one more feature where the Docker team continues to deliver after rebuilding itself as a new kind of developer tools company. It will be exciting to see the next thing they come up with.