Docker has been getting unprecedented attention from developers, IT pros, and industry analysts, which is no surprise considering it is one of the fastest growing open source communities. Docker, Inc., the company that conceived of the idea of Docker, is now a billion-dollar unicorn startup.

Despite its stellar growth and community participation, Docker has its own set of challenges. Early adopters of Docker agree that storage and networking are two areas that need improvement. These capabilities become more important when customers want to run containerized workloads to production.

Two companies that are augmenting Docker by adding storage and networking capabilities are ClusterHQ and Weaveworks. San Francisco-based startup ClusterHQ created Flocker, an open source data volume manager for Docker that makes data-driven containers portable. London-based startup Weaveworks developed Weave, a networking layer that connects containers with each other.

Flocker bridges the gap between stateless and stateful containers

Containers are not designed to deal with transactional databases that need persistence and durability. Docker does, however, provide a mechanism to attach data volumes to containers; these volumes expose a directory from the host machine that is outside of the container boundary. When a container is terminated, data is still available since it is stored on the host machine. While this feature addresses the issue of persistence and statefulness, it makes containers less portable.

One of the key advantages of containers is the ability to move transparently across multiple hosts. The dependency of a container to the host machine makes the move to Docker less useful.

ClusterHQ identified this as the biggest challenge that DevOps teams face when moving containerized workloads to production, so they created Flocker, a tool that transparently brings the persistence and statefulness to Docker containers. Unlike Docker data volumes that force host affinity, Flocker data volumes are portable and can be ported along with the container. Flocker provides tools to manage containers and volumes together.

Based on ZFS, Flocker creates its own storage backend that handles persistence. When a stateful container is migrated, Flocker takes a snapshot of the volume and restores it on the destination host. When the container is launched on the new host, it will find that the same volume is available to it. The migration of data along with containers provides an illusion of seamless portability. Behind the scenes, Flocker handles the complexity of managing the storage volumes.

Weave brings connectivity, discovery, and monitoring to containers

Docker networking is not for the fainthearted; the architecture is complex, and if it is not dealt with the right way, it can create many challenges in the production environment. Weaveworks is attempting to simplify Docker networking by bringing traditional network capabilities to containers.

A key feature of Weave is the virtual Ethernet switch. The containers participating in a cluster see the virtual Ethernet switch as a giant switch connecting all the containers. The containers can talk to each other in the same way the Linux machines talk to each other in a homogenous network. DevOps teams can use traditional networking tools to administer and manage the network layer.

Weave’s other dominant feature is the integrated DNS service. Since containers may run on any host at a given point, they need to advertise their location. Dependent containers will look up the central database/registry to discover the target container’s location. Weave’s DNS feature solves the containers’ discovery problem through the traditional DNS model. Each container is pointed to the local DNS container for lookup. By running Weave DNS on each host, the platform keeps the records in sync.

WeaveDNS also supports load balancing and health monitoring of containers. The service can route the traffic to one of the containers registered with the same network. It can also remove the address of any dead container to prevent it from receiving requests.

Docker plugins

At the recent DockerCon conference in San Francisco, the company announced a plugin architecture that seamlessly integrates third-party tools with the core the Docker platform. It was not surprising to see Flocker and Weave as the first set of plugins to get integrated with Docker. The plugin architecture enables Docker customers to use the same set of core tools without having to deal with disparate tools for each feature.

If you are keen on evaluating Docker for complex workloads, you must evaluate Flocker and Weave. Your IT teams will like them.