Look, Docker CE was fine for fucking around on your laptop, but the moment you tried to run it in production with any kind of scale, you'd learn real quick why enterprise software costs money. Docker Enterprise wasn't Docker being greedy - it was their admission that running containers in production is harder than their marketing made it look.
The dirty secret was that Docker CE would shit itself the moment you had more than a handful of containers, needed any kind of security compliance, or god forbid, had to run Windows containers. Try explaining to your CISO why your container platform has zero access controls and you'll understand why Docker Enterprise cost $1,125 per node per year.
The Three Components That Actually Worked
Docker Enterprise had three parts that solved real problems:
Docker Engine - Enterprise was the container runtime that didn't randomly break on kernel updates. Unlike Docker CE, which would mysteriously fail with ECONNREFUSED
errors after Ubuntu patches, this version actually got tested before release. I learned this the hard way when Docker CE 19.03.8 broke our entire staging environment after a routine Ubuntu kernel update - turns out the systemd integration was fucked and containers wouldn't start with some obscure Failed to create endpoint
error. Docker Enterprise never had that issue because they actually tested with production kernels.
Universal Control Plane (UCP) gave you a web interface that didn't look like it was built in 2003. More importantly, it had RBAC that actually worked - you could give developers access to their namespaces without them accidentally nuking production. The GUI was slow as molasses (we're talking 15-20 seconds to load the services page), but at least it existed. And when someone inevitably tried to docker rm -f
every container on the cluster, UCP would actually stop them.
Docker Trusted Registry (DTR) was basically Harbor that didn't suck. Built-in vulnerability scanning meant you'd know your base images were compromised before they hit production, not after. The image signing feature actually worked, unlike most enterprise security theater. DTR would catch shit like using Ubuntu 16.04 base images with 47 critical CVEs and refuse to let you deploy until you fixed your Dockerfile.
The Day Docker Gave Up on Enterprise
November 2019: Mirantis bought Docker Enterprise for an undisclosed amount (read: way less than Docker hoped). Docker Inc. basically admitted they couldn't figure out how to make money from enterprise customers who actually needed shit to work.
Docker kept around 750 enterprise customers - essentially everyone who'd learned the hard way that Docker CE + wishful thinking isn't a production strategy. Those customers were paying serious money ($5K-$50K+ annually) because Docker Enterprise was the difference between "containers work on my machine" and "containers work when the CFO is breathing down your neck about uptime."
Mirantis got the customers, the codebase, and most importantly, the support engineers who knew how to debug Docker networking issues at 3am. Docker got to focus on Docker Desktop and pretend that enterprise infrastructure was someone else's problem.