CHICAGO - Just over a year ago, Solomon Hykes created the open-source Docker project. Since then Docker has exploded in both popularity and hype. In a keynote session at the LinuxCon conference, Hykes explained why the hype is both a blessing and a curse.
Hykes asked the audience if they had heard of Docker and nearly all the hands were raised. He then asked how many people have actually used and deployed Docker and fewer hands were raised. It's a problem in that while many people have heard of Docker, few actually know what it does and what it's really all about.
Today the open-source Docker project has 560 contributors and there are over 14,000 Dockerized apps. Hykes explained that Dockerized apps are apps that have been outfitted at the source code level to be automatically built into a Docker container.
As to why Docker became very popular very fast, Hykes has a few ideas.
"It was at the right place at the right time for a trend much bigger than Docker — how apps are built," Hykes said.
Hykes noted that developers today need to create apps that run like the Internet — that is to say the app has to be decoupled from the underlying machine. The application also has to be "everywhere and nowhere" at the same time.
"Developers need a way to build distributed apps and that's the problem we're trying to solve," Hykes said.
Docker is a toolkit to build distributed applications, and it enables developers to build stuff on their own terms. Hykes said that Docker gives developers simple loosely-coupled tools.
The Problems Docker Aims to Solve
There are multiple issues that Docker is aiming to solve. The first problem Docker addresses is packaging and distribution of application components. Hykes said that Docker provides tools for specifying from source how to create a compressed file with extra metadata and a way of transferring a new version with minimal overhead.
Docker also provides a sandboxed runtime that leverages Linux namespaces to help provide isolation. There is also a networking aspect that helps developers consume networking resources on a host in a standardized way.
"Docker also provides clustering and composition," Hykes said. "When using Docker you hit two problems — one is that you're not running containers on one machine at a time you want to run on a cluster of machines."
Hykes said that apps need to be spread out across hundreds or thousands of machines. The composition piece is all about being able to manipulate an app made up of lots of different components.
"A major focus of the next three or four releases of Docker is about adding material to help developers specify apps and dispatch on a group of machines," Hykes said
Another area of Docker that is being worked on is identity. Hykes said that identity is about the ability to scan what's inside of a container and make a decision on trust.
"In the 1.3 release coming in September, we're introducing the notion of engine keypairs," Hykes said. "So every Docker engine is bundled with a key management system."
Authorization is another area of Docker being worked on. Hykes said that authorization is based on identity and will provide an advanced and complex way of detailing what containers are allowed to do.
"We're trying to catch up to the community demand in terms of quality and features, and we really want to make this a solid foundation," Hykes said.