Only few would argue that Docker is not responsible for the drastic change that is happening now in the way we build, deploy and maintain our software. Popularized by Docker, containers allow us to remove the boundaries between development and operation departments. Docker have introduced a common language to define infrastructure in programmable way, throughout the entire software development lifecycle.
The reason for achieving such adoption comes from the decision to tackle the full lifecycle of the creation of Docker images and deployment of the Docker containers. And despite the fact the Docker was built to run large systems with hundreds or thousands of containers, it is still only useful when running on a single host. This is due to an extremely simplistic implementation of the core functionality. Links for networking, volumes for storage and local compositions with Docker-Compose for orchestration. All these techniques are excellent for experimentation but break down when you move to multi-host environments.
Initially, Docker only partially succeeded with it’s philosophy, batteries included but removable. Batteries were indeed included but without the possibility to replace them with more advanced technologies that could address real live, large scale systems. But that’s just changed today.
If you were watching Solomon Hykes’ keynote at the DockerCon, you know that Docker now supports plugins for networking, storage, orchestration and service discovery. This support is still experimental but the message is very clear - Docker is now an open platform that can be easily extended using additional tooling. From now on, Docker will expose a growing number of extension points to allow tool vendors to extend default Docker functionality without the need for wrappers around the Docker CLI.
The first plugins to be mentioned at the keynote are Weave Net for cross-host networking and Flocker for persistent storage management. These are excellent examples of the tools that can be called ‘internal plumbing’. Such tools shouldn’t be visible to the user but need to be hidden behind the Docker walls in the same way as pipes and electric wiring are hidden behind the walls of our houses.
The plugins approach will not just allow us to replace specific parts of functionality but also to use different plugins in different situations. For example, a developer working on a laptop will use local links and volumes that will be replaced with Weave Net and Flocker later on.
"Docker just became a production platform for the enterprise. Until now it has been hard for users to build complex, real world applications using best of breed Docker tools. Now with plugins, all the valuable pieces come together."
A similar change is happening with orchestration. Docker-Compose’s format is excellent - simple, intuitive and easy to use. By opening the scheduling backend to advanced tools such as Mesos, Docker makes another significant step towards standardisation of the development process from the laptop all the way to the cloud.
The bottom line for this story is this that Docker is changing direction from being a tool to start containers to become a platform that connect all the rest of the technologies in the ecosystem.
"Docker plugins have been a great show of open collaboration from the Docker team and have huge implications for the future of the container ecosystem: now users can choose from a vibrant array of advanced networking and container data management tools without losing the brilliant simplicity of the Docker developer experience."
Batteries included but removable just became a real deal as Docker promised 6 months ago in DockerConEU here in Amsterdam.