The Blog


You probably have a Google search engine running on your phone. But it doesn’t just run on your phone. It works so well for you—and for millions of others—because it’s really running on thousands of machines in data centers across the globe. The same goes for Facebook and Amazon and, well, all of the Internet’s most popular services. In the modern age, this is the only way to build an app—the only way to serve a worldwide audience that expects an instant response at all times.

The thing is, running software across thousands of machines is incredibly difficult. And running it efficiently—without each machine burning unnecessary amounts of energy and money—is even more difficult. Google and Facebook needed years to get things right, with help from some of the brightest minds in computer science.

Minds like Solomon Hykes’. He created Docker, a new means of building Internet-based software. Docker gives businesses a simpler way to run software with ultrahigh efficiency across hundreds, thousands, even tens of thousands of machines. “The individual machine becomes less important,” says Hykes, a French-educated software coder who launched Docker from inside a tiny startup in San Francisco. “The collection of machines is what matters.”


Just two years after its debut, Docker’s impact on computer science is already enormous. More than 100,000 applications now use the technology, and it’s backed by a who’s who of the tech industry, from Google to Amazon to Microsoft to IBM. Nonetheless, it’s a hard thing to grasp. But let’s try.

First and foremost, Hykes says, you should think of Docker as a shipping container for software. Just as shipping containers give us a standard pod we can transfer from boat to train to truck, Docker offers a standard means of moving software from machine to machine to machine. If an app needs more computing power—or some of the machines running it quit working—Docker provides a way of easily spreading to new machines.

This is particularly important in the age of cloud computing, where businesses run their applications across their own machines as well as machines rented from cloud computing services. The three biggest such services—run by AmazonGoogle, and Microsoft—have embraced Docker, and that means businesses can more easily extend their applications onto this practically unlimited pool of computer power. “You can think of the world’s computing infrastructure as a single thing, a thing that we’re all building together,” Hykes says.

But Docker is more than a means of shipment. It also helps get the most out of each machine. Businesses can pack multiple containers onto any given computer, grabbing every last bit of the machine’s resources. A container, you see, isn’t really a fixed size. You can think of it more as a flexible Shmoo or a loosely filled bag of peas. If a small sliver of memory or processing power is unused, a container can nestle in there, maximizing every available bit of capacity to keep an application running smoothly, whether its serving up search results, spreadsheets, movies, or baby sloth photos.

100,000 | The number of apps that currently use Docker.

An older technology called “virtual machines” also helps divide a machine’s resources among multiple applications. But Docker helps coders design their applications without having to worry about the vast infrastructure needed to run them. As Google cloud computing guru Eric Brewer puts, it gives coders an “application-level view” as opposed to a machine-level view. “It’s pretty clear that the application view is more natural and will win in the long run,” he says.

Technologies like Docker, Brewer says, are reminiscent of the way Google runs its online empire, the largest on the net: “We both have the same vision of how applications should be built,” he says. That’s quite an endorsement for Hykes and his creation. And it shows where they’re headed: everywhere.

Check out the full Next List here.