Making Docker play nice with databases
ClusterHQ brings databases to Docker with Flocker
While it's clear that Docker and container-based architecture is rapidly becoming a popular development and deployment paradigm, there are still a number of areas where containers still struggle compared to traditional bare-metal or virtualized solutions.
One of these areas is data-centric applications. While virtual machines have developed a number of tools for snapshotting, migrating, resizing, and other management tasks, the management side of Docker containers and their related volumes isn't necessarily at the same level of maturity. Yet. There are still some unanswered questions about how best to build a containerized application capable of dealing with machine failure, scalability, and other issues without introducing unnecessary complexity. These challenges are particularly difficult when applied to databases associated with containers.
The approach used by many container-based applications so far has been either to accept these difficulties or to more often use an external database service, which takes away much of the portability that gives containers their deployment advantage to begin with.
"Managing containers with persistent state is a significant problem today," said Gabriel Monroy, founder and CTO of Deis, in a ClusterHQ press release. "Containerized databases are not suitable for production workloads without solutions for data migration, cloning and failover. We are excited to see the ClusterHQ team tackling these problems head-on."
ClusterHQ knows containers. Much of the team has prior experience working with containerized application through FreeBSD Jails. But with the rise of Linux as the preferred platform for many new developers seeking to easily deploy secure applications, the ClusterHQ team moved their experience to Linux to work with Docker containers instead of Jails.
The goals of Flocker
As an open source project in its infancy, Flocker has not yet realized its complete roadmap, but it has set out some goals and features it hopes to achieve.
- As many containerized applications run on multiple servers, Flocker seeks to support multi-node and clustered applications and the challenges that come with running across distributed systems. It provides a systems for defining an application as a set of connected containers.
- Flocker also attempts to make migration easier, by allowing for the easy movement of containers and their data volumes between host systems.
- In order to meet the needs of application developers needing to manage deployment to a variety of environments, Flocker seeks to work with any public, private, or bare metal cloud.
Interested in learning more about the project, or getting involved in its development? You can follow the ClusterHQ blog, or check out the source code on GitHub, which is available under an Apache 2.0 license. ClusterHQ also maintains a mailing list, and a presence in the #ClusterHQ IRC channel on FreeNode.