Skip to main content

Compose GUI

Compose workflows started in the CLI, while Docker Desktop showed only the outcome. I designed the bridge to configuration understanding and Kubernetes testing.

CompanyDocker
FocusDeveloper Tools
TypeNew product, 0→1
Timeline~2 months
PlatformDocker Desktop, CLI
TeamSole designer, 1 PM, 2 Engineers
Impact17k+ Daily Users · Millions via CLI
Compose project
01Role

Role and team

I led design end to end across CLI and Desktop GUI, taking the project from zero to launch. The team included one PM, a research partner for initial discovery, two engineers, and a copywriter.

02Challenge

Challenge

Developers ran multi-container applications entirely through the CLI. Docker Desktop had no Compose representation.

Without a GUI, much of the workflow happened outside the product. This limited data collection and visibility into how developers actually used Compose.

Inside Docker Desktop, users could see their running containers but had no way to understand the configurations behind them. For junior and intermediate developers, this made Compose particularly difficult to learn.

For developers ready to move beyond local development, there was no path from Compose to Kubernetes within the product.

03Success

Success metrics

Work to deliver

• A native Compose GUI in Docker Desktop, a widely requested feature

• CLI improvements to support flow between the two surfaces and promote Compose feature adoption

• Groundwork for future Compose and Kubernetes investments

Data to track

• Authenticated logins and account visibility

• Docker Desktop usage for Compose workflows

• Kubernetes usage within Docker Desktop

04Process

Research

The research happened in two phases. First, a quantitative survey of 33 Docker users explored Compose usage, pain points, and customization habits. 64% were already using Kubernetes (86% at larger companies), confirming demand for Kubernetes tooling within Docker Desktop. Separately, internal data showed only 38% of Compose users were authenticated, underscoring the visibility gap.

To go deeper into the workflows and collaboration patterns the survey surfaced, I partnered with a researcher to conduct qualitative interviews with 10 developers of varying skill levels. The interviews further validated the Kubernetes demand and surfaced three findings that shaped the design direction:

Advanced developers were the bottleneck. They wrote configs, distributed them across teams, maintained them, and fielded every modification request.

Junior and mid-level developers relied on advanced developers or online templates, then tried to modify configs without understanding Compose concepts. The core issue was comprehension of Compose itself.

Compose was not the end of the workflow. Developers wanted to move into production-like testing and Kubernetes as a next step.

Competitor tools were already offering both Compose-style interfaces and Kubernetes support, creating a real churn risk. Evaluating those tools alongside developer forum discussions further informed the scope of the MVP. The synthesized findings were presented to stakeholder teams to integrate the work into our roadmap.

The team aligned on parts of the system to support:

Docker Desktop would house the Compose config GUI.

The CLI served two purposes: a path to running containers and the new GUI, and a place to promote Compose features like Watch and detach mode.

05Iteration

Iteration

I tested several prototypes: node-based service graphs, form-driven editors, and code-viewer layouts. The more visual directions looked compelling in isolation, but developers were already working in YAML. Iterations that leveraged existing patterns, like file-tree navigation and code display, were easier to orient to and faster to validate with users. The product needed to work with existing editing workflows, not replace them.

That narrowed the MVP to a read-only config viewer paired with contextual learning, and freed capacity for the Compose-to-Kubernetes path the research had validated.

Iteration — figure 1
Iteration — figure 2
Iteration — figure 3
Iteration — figure 4
Iteration — figure 5
Iteration — figure 6
Iteration — figure 7
Iteration — figure 8
Iteration — figure 9
Iteration — figure 10
Iteration — figure 11
Iteration — figure 12
Iteration — figure 13
06Decisions

Key decisions

View-only, not an editor. The first release should focus on understanding and visibility. We cut editing from the MVP deliberately. Shipping view-only first let us validate whether developers would use a Compose GUI at all, without the risk of a half-built editor.

Key decisions — figure 1
Key decisions — figure 2

A contextual learning center. Docker Desktop had a learning center, but it only surfaced general documentation. I redesigned it to be contextual: developers step through their configuration term by term, building understanding while staying anchored in the same interface where their containers are running. I proposed this as a reusable sidebar component, which led to discussions about standardizing iconography, responsiveness, and flexibility across Docker Desktop. I collaborated with our copywriter to produce micro-documentation for the learning center.

Key decisions — figure 1
Key decisions — figure 2

Compose Bridge: keeping the workflow in one place. The question was whether to introduce a new top-level tab for Compose or Kubernetes. I pushed to keep everything within Containers. Developers were already there: running containers are the direct result of configurations. Compose Bridge lives in that same context, so the path from local development to production-like Kubernetes testing stays in one place.

Key decisions — figure 1
Key decisions — figure 2
Key decisions — figure 3
Key decisions — figure 4

Multi-node Kubernetes. Docker Desktop only supported single-node Kubernetes clusters, which was not enough to simulate real infrastructure. As the Compose Bridge work evolved, I worked with engineering to introduce multi-node support and designed the configuration experience: a slider to set the number of nodes and a one-click deploy.

Key decisions — figure 1
Key decisions — figure 2
07Solution

Solution

The configuration viewer sits inside Docker Desktop’s Containers tab. Selecting a Compose stack opens the running containers and logs, with access to the project’s configuration files. A file-tree panel on the left mirrors the structure of the Compose project; selecting a file opens a read-only code view on the right.

Highlighted terms in the code link to the contextual learning center in a sidebar, where developers can work through their configuration concept by concept. An “Open in IDE” button hands off to the developer’s preferred editor when they need to make changes. A refresh button reflects any external edits immediately.

From the CLI, every docker compose up surfaces an interactive menu with options to enable Watch, configure detach mode, or open the GUI directly.

Compose Bridge converts configurations into Kubernetes manifests within the same Containers view. Paired with multi-node Kubernetes support, developers go from local Compose configuration to production-like testing in one place.

Solution — figure 1
08Impact

Impact

• The configuration viewer reaches over 17k daily active users.

• Authenticated logins through the Compose GUI increased 6%.

• The CLI menu surfaces on every docker compose up reaching millions of developers and driving adoption of features like Watch and Debug.

• The contextual learning center became a reusable pattern adopted across multiple surfaces in Docker Desktop.

• Compose Bridge and multi-node Kubernetes drove further investment in Kubernetes capabilities by other teams.

09Reflection

Reflection

Cutting editing from the MVP felt like a compromise, but it created room to pursue the fuller journey from comprehension to deployment.

The project showed that some workflow improvements depend on foundations beyond the interface itself. Connecting Compose to Kubernetes required new infrastructure, not just new screens. The design work was as much about identifying what needed to exist underneath as it was about shaping what developers would see.

If I were to revisit this work:

Drag-and-drop Compose files. Let developers drop a config into Docker Desktop and spin up containers through the GUI without touching the CLI.

Use Ask Gordon, Docker Desktop’s AI agent, to help developers generate Compose configurations from scratch, lowering the entry point from comprehension to creation.

Let's work together

Available for new opportunities. If you need a designer who moves fast and owns the work end-to-end, I'd like to hear what you're working on.