In the always connected, cloud-centric world, developers are writing new kinds of apps that need to be always online and that have the potential to scale to support millions of users. Even if customers are using these apps on a smart phone, they are still part of the fabric of the Internet itself.
Today’s tools for writing these kinds of apps are not adequate, argues Solomon Hykes, CTO and founder of Docker, the company formed to support the open-source Docker project.
“Everyone is looking for a platform to build new apps, and the biggest problem they have is that these apps don’t run on a single computer from beginning to end,” Hykes said in an interview.
Developers run in to problems as they take code they’ve written on their own machines and attempt to run it on other computers with different operating systems, databases and services. It’s one thing to build a software program and another to test and prepare stable apps that run in production.
“Now your app is supposed to span any number of machines, it’s supposed to continue running even if you swap out machines, as you go from your own servers to Amazon or Google Compute Engine,” Hykes said. “The biggest problem is how do I package my app so that it can be moved around from machine to machine?”
That’s what Docker does. It streamlines, simplifies, and accelerates app development, developers say. Ebay used Docker to build and test eBay Now. Spotify used Docker to make its “build pipeline really fast.”
A Whopper For Docker
At the company’s first conference yesterday in San Francisco , the company announced Docker 1.0, what it considers the first fully baked version of an application container software engine for enterprise deployment. Version 1.0 runs on all the major Linux distributions—Red Hat, Debian, Ubuntu, Fedora, Gentoo, Suse, and Arch. With boot2docker, Docker 1.0 supports Mac OS X and Windows.
Even though this is Docker’s first official release, there are already more than 14,000 “Dockerized” apps published on Docker Hub, 6,500 Docker-related projects on Github and some enterprises have been using Docker in production since version 0.4, about six months ago, according to Ben Golub, CEO of Docker.
“Like any open source project, it is difficult to say precisely how many organizations are using us in production,” Golub said via email. “There are at least 50 published use cases. There are 10 different organizations talking about using Docker in production at DockerCon. Close to 3 million docker containers have been downloaded, and there are close to 75,000 developers who have gone through Docker training,” he added.
Docker is the most active project at Github, with almost more than 450 contributors, and only 30 people in the company.
Docker 1.0! Production warning is gone!#dockercon
— Brian Goff (@cpuguy83) June 9, 2014
Docker also announced enterprise support through Docker and 10 system administrator partners, plus the Docker Hu, and Repository.
If the reaction from the company’s first conference, DockerCon, is any indication, Docker is a big deal.
Analyst Al Hilwa, program director of software development research for IDC, said in a research note from the sold-out conference today:
This is important technology for the evolution of PaaS. It is an important way to get standardization at the sub-virtual machine level, allowing portable apps to be packaged in a lightweight fashion and easily and reliably be consumed by PaaS clouds everywhere. The level of ecosystem support Docker has gained is stunning and it speaks to the need for this kind of technology in the market and the value it provides. This ecosystem is a great omen for the future richness of the DockerHub and the company’s business strategy.
Build, Ship And Run Distributed Applications Faster
Docker is creating a massive buzz because it simplifies life for developers. Instead of cobbling together tools and writing apps for specific databases and other software components and operating systems, with Docker, developers can “package” an application in standard containers that can be transferred to virtually any server anywhere, whether it’s a virtual server on the developer’s laptop, a physical server in a company’s data center, or a virtual machine on Amazon’s Elastic Cloud. It is kind of like PhoneGap (Apache Cordova) for backend services. The beauty of Docker is that developers don’t have to know in advance where their apps will end up running, Hykes said.
— Gene Kim (@RealGeneKim) June 9, 2014
And developers don’t need to worry about the development “matrix from hell,” where rows are software components and columns are infrastructure components. “Docker lets you not have to choose,” Hykes said. You can add rows, such as different databases, or columns, like VMware or Red Hat Enterprise easily, he said.
The underlying operating system is abstracted away by the Docker runtime, a “very thin layer” that sandboxes the app and makes it portable. Without the Docker layer, an app would have to be written to deal with different operating systems, different hypervisors (software that enables virtualization), different cloud platforms. You might assume that such a layer of abstraction would slow down an app’s performance, but Hykes claims it does not, in part because it uses capabilities that have existed in the Linux kernel for years.
“Linux does the heavy lifting,” Hykes said.
Are Containers Going To Kill Virtual Machines?
Could Docker be considered a new operating system that lets developers write applications to run on a collection of computers running different operating systems? Or are containers going to kill virtual machines?
Some have mused whether Docker’s real competitor is VMware, or another company that relies heavily on virtual machines. About half the time, developers actually use containers in combination with virtual machines, and they coexist well, Hykes said. But instead of seeing virtual machines everywhere, we’re going to start seeing vVMs for the machine layer.
Hilwa said Docker will make virtualization better.
“Virtualization provided an encapsulation of all software on a machine, including OS and app, and created a portable world for such workloads. We owe modern day cloud infrastructure to virtualization … But, virtualization is heavy weight and the machine images are large. Docker is a sub-virtualization technology which bundles an app and what it needs in libraries in a portable way. This allows PaaS services to be much denser in terms of how many workloads they can pack on a machine safely and reliably. It allows this to be done in a standard way which is why there is a big of ecosystem behind it.”
Stop Wasting Time Building Your Own Operating System
About that shipping container metaphor. If you’re producing a type of product and want to arrange for it to be shipped around the world, how do you get it where it needs to go?
“I want to not think about the infrastructure that will deal with this,” Hykes said. “I don’t want to decide now I am going to use the one by one wood crates specific to this one. You can send a standard shipping container via any of those methods, and change providers, because everyone uses that format … Having a box is very convenient. It’s the box with the shape that everyone agreed on. That’s what we did with Docker.”
— Al Hilwa (@AlHilwa) June 9, 2014
Developers waste time basically reinventing their own operating systems, Hykes said. That may be fine for big companies with lots of resources like Google or Twitter, but most developers don’t have the time and knowledge to build their own. The premise is the same as any other development platform: take care of underlying services that the cloud requires, so developers can focus on writing their apps.
Docker started out as dotCloud in 2008 to build a platform as a service offering hosting and developer tools. When the Docker project became popular, dotCloud changed its name and took on the role as steward of the project. Developers told Hykes they needed Docker to be supported by an organization in order to get approval to use it.
“In order to get the green light from my boss, we need to buy support,” Hykes said developers have told him. And Docker needed something to sell to be in business. Docker announced Registry, a new cloud service for developrs, at its conference yesterday.
“The only reason we are here is because an open source community appeared and said it’s time. You’re the stewards,” Hykes said.
Lead image by Flickr user wirralwater, via Creative Commons 2.0