There is a small whale in the menu bar of nearly every developer laptop in the corporate world. It arrived years ago, free, and it settled in so thoroughly that onboarding documents stopped explaining what it was for.
On 31 August 2021 the whale grew a coin slot. Docker announced a new subscription agreement, effective the same day: any company with more than 250 employees or more than $10 million in revenue now needed a paid seat for every person running Docker Desktop. The tool did not change that morning, and neither did the fleet of installed copies. What changed was that the default, quietly occupied over a decade, started charging rent, and companies were given 5 months of grace to work out that they had been converted from users into customers.
This is a bill worth auditing, because almost nobody audited it at the time. They just paid.
What the Subscription Honestly Buys
The audit has to start with the credit side, and there is one.
Docker Desktop is real engineering. Containers are a Linux idea: namespaces and cgroups, constructs of one particular kernel. A Mac does not have that kernel and neither does Windows, so Desktop quietly runs a Linux virtual machine, wires its network into yours, shares your files across the boundary, keeps the arrangement alive through sleep and Wi-Fi changes, and survives the OS update that would have broken your hand-rolled setup. Anyone who maintained that plumbing by hand in 2015 remembers what it cost in mornings.
The engine underneath, meanwhile, stayed free. Docker Engine is Apache-licensed, open, and runs natively on any Linux box, and Docker Inc. spent a decade giving the whole stack away while the industry rebuilt itself on top. The subscription was not an act of greed out of nowhere. It was a company that had created a category, watched others monetise it, and finally sent an invoice for the part it still controlled.
That is the fair reading. Now the numbers.
The Meter, and the Two Times It Was Turned
The 2021 price list opened at $5 per user per month for Pro, with Business at $21. In October 2022 Business rose to $24 and Team followed upward. In September 2024 came the broad turn, effective with the November plans: Pro from $5 to $9, Team from $9 to $15, increases the trade press summed up as up to 80 per cent. Docker publishes one global list in US dollars, with no euro pricing and no regional rate, so a European buyer pays the dollar figure plus whatever the card issuer and the tax office add.
Business is the realistic tier for exactly the companies the threshold catches, because that is the tier where single sign-on and device management live. So a 500-seat engineering organisation pays $144,000 a year, every year, for software none of its 500 people chose this year. They chose it, or inherited it, back when it was free.
Notice the sequence, because it is the actual mechanism and it deserves a name: the retroactive licence. First a tool becomes the default, free, on every machine, in every onboarding script and every README. Then the meter is fitted to the installed base, with thresholds calibrated so that individuals and small shops stay free and feel nothing, while the companies too entangled to leave quickly do the paying. Then, once the conversion is digested, the meter is turned. Twice, so far.
No deception was involved anywhere; every step sat in a public blog post. Patience did the work, together with a fleet that had stopped asking what the whale was for.
Who Pays, and For What, Precisely
Here is the part of the invoice that repays a slow read, and it is the leanest fact in the whole affair.
The subscription does not charge for containers. Containers run free of charge on the operating system they belong to; a Linux developer with the open engine owes Docker nothing this morning and never will. The seat price attaches exclusively to the machines whose operating system cannot run the artefact natively. What is being metered, at $24 a head, is the distance between the developer's laptop and the kernel their software actually runs on.
On Windows the arithmetic turns almost comical: Microsoft ships a genuine Linux kernel with WSL2, free, and the engine runs in it, free. The paid product is the convenience layer wrapped around two free things. The VM is hidden and the mount is hidden, and hidden complexity is still complexity; none of the parts is secret, and a visible virtual machine with a shared directory has done the same job since long before the whale.
Which is why the money can be made at all, and the audit should say so plainly: the fee is rent on a mismatch the industry chose, and on nothing else. Development happens on operating systems the deployment target does not resemble, and rather than close that gap, the standard practice is to lease a daily bridge across it, per person, per month, price adjustable by the lessor.
The tool-for-tool alternatives are real and worth naming. Colima is MIT-licensed and free; Podman Desktop, Red Hat's answer and daemonless by design, is Apache-licensed and free, and Red Hat thought the daemon serious enough to remove Docker from RHEL 8 outright in 2019. Each of them removes the invoice. None of them removes the gap, because a free bridge across the same mismatch is still a bridge, and the next one along may well grow a slot of its own.
That most organisations pay anyway has a sober explanation: the switching cost of a default. Re-tooling 500 laptops and re-writing every onboarding document, followed by months of tickets that open with the words it worked before. The subscription price is set comfortably below that pain, which is precisely how rent on a default is priced.
What the Other Side of the Fence Costs
There is a system where none of this arises, and it has been shipping since March 2000.
FreeBSD jails are not a product bolted onto the kernel; they are a feature of it, in the same tree, with the same release cycle and the same documentation. No daemon runs as root to manage them, so no daemon can crash and take every jail with it. Nothing is pulled from a registry whose publishing barrier is an e-mail address. There is no subscription, because there is no separate company that could sell one. A developer running FreeBSD builds and runs the artefact on the operating system it deploys to, and the entire apparatus described above simply has no reason to exist.
The obvious retort is that this only helps whoever already runs FreeBSD everywhere. Fair, and the answer is smaller than expected. The parts Desktop hides are a virtual machine, a shared directory, and a way to move a filesystem from one machine to another. Unhidden, that is QEMU, NFS and zfs send, all of them older than the whale, and roughly two hundred lines of shell to tie them together. I built exactly that for the book and called it the Jail Ferry, because a docker loads ships and a ferry carries things across a channel. It moves jails between a server and a laptop, and it happens to be five shell scripts instead of a subscription.
That comparison is not fair and is not meant to be, because Desktop does considerably more: images, layers, Compose files, a Kubernetes cluster, extensions, a GUI. The question worth asking is not which does more. It is how much of that more anybody uses, and what the difference costs per head per month.
The Limit
The opposing case deserves its full weight. $24 a month is roughly 15 minutes of a developer's loaded cost; if Desktop saves that per month against maintaining Colima and its edge cases, it has paid for itself, and in many shops it genuinely does. Central update control and device management are things a 500-seat organisation is right to want, and it already pays for them elsewhere without blinking. The migration is not free either, and an afternoon of every developer's time costs more than a year of seats. And Docker Inc. is entitled to be a business; a decade of free tooling was not a promise of a second decade.
And the fence has a cost on its own side, which this piece would be dishonest to omit. Jails run on FreeBSD, so the comparison holds only where FreeBSD is a real option; a shop whose product depends on Linux-only kernel features has a different conversation, and one whose deployment target is somebody else's Kubernetes has almost none. The Jail Ferry is my own tool, which makes me the last person qualified to call it effortless.
All true. The audit does not conclude that anyone was cheated. It concludes that a recurring $144,000 line item exists in thousands of budgets for a bridge between mismatched systems, that the line item was created retroactively on an installed base, that its price has been turned twice in 5 years, and that the standard review treats it as weather rather than as a decision that could be revisited.
A company that runs its development on the operating system it deploys to owes this invoice nothing at all. That option is rarely on the table in the meeting where the renewal is approved, because the renewal meeting is about the price of the bridge, never about the width of the gap.
No villain is required for any of this. The whale read the situation earlier than the people paying for it: once a mismatch becomes infrastructure, nobody fixes it, somebody meters it.
Which leaves the question the renewal meeting never reaches. The bridge has a price, and it is on the invoice in front of you. The gap has one too, and it has never appeared on any invoice at all.