Docker recently announced the availability of a set of new tools that make it easy to run production workloads. From the core engine to the client-side tools, everything is updated to support complex, distributed, containerized workloads.
The challenges of running containerized applications in production
From the time it was conceived, developers embraced Docker with great enthusiasm; it enabled them to bring parity to the development, test, and production environments. Gradually, DevOps teams started to adopt Docker for managing the continuous integration and continuous deployment pipelines.
However, running Dockerized applications in production remained quite challenging; the key problems were with networking, storage, and cluster management. Running stateful applications such as MySQL databases within containers was risky due to the lack of portable persistent storage. Since containers are distributed across multiple hosts, network configuration across the hosts and containers was complex. Deploying and managing multiple containers that belonged to one application across different hosts was challenging.
While cluster management tools such as Kubernetes and Mesosphere attempted to address these challenges, Docker has been working on building native tools that will be a part of the core Docker platform. Docker 1.9 marks a milestone in the history of containers; the platform is production-ready to run complex containerized applications and microservices.
Key features of Docker 1.9
Docker Engine is the workhorse of the platform; it’s responsible for the lifecycle management of each container running on a host. With the latest release of 1.9, it supports customizing the way images are built. Dockerfile, the declarative mechanism to build images, now supports additional parameters to customize the final image. Other enhancements include a logging driver for Amazon CloudWatch that can ship container logs to the popular logging system of AWS.
Docker 1.9 includes the final release of networking that was announced in an experimental mode in June 2015. This feature allows the creation of a virtual network that can span multiple hosts. Containers can be launched on any host of the cluster while retaining the same network configuration. These features make development and deployment of microservices easier.
Through the plug-in architecture, customers can swap the default networking driver with plug-ins available from VMware, Calico, Weave, Cisco, Midokura, and Microsoft.
While moving stateless containers from one host to the other is easy, it’s incredibly difficult to deploy and manage stateful containers. Addressing this requirement, the latest release comes with a redesigned storage system based on the plug-in architecture. Flocker, one of the popular plug-ins, can be easily integrated with containers that run in a cluster. This design makes stateful containers portable. Customers can also choose storage plug-ins from Blockbridge, Ceph, EMC, and Portworx.
Docker Swarm, the native clustering engine, has reached the 1.0 version. Swarm treats multiple Docker Engines running across multiple hosts as a single, virtual engine. Standard Docker tools work with Swarm because of its API compatibility with Docker Engine. When a container is provisioned, Swarm can schedule it on any of the Docker Engines registered with the cluster. It handles the lifecycle of applications composed of multiple containers running in a cluster.
Docker Swarm 1.0 is fully integrated with the networking and storage features of Docker, making it easy to manage microservices.
Enhancements to Compose, Toolbox, Registry
- Docker Compose, the tool for defining and running multiple containers, now supports Microsoft Windows. Environment variables can be passed to containers from the YAML file.
- Docker Toolbox, the environment to run Docker on Mac and Windows, is updated to support the new features and tools.
- Docker Registry is enhanced to support Google Cloud Storage and read-only mode.
Docker 1.9: The right tools and capabilities
The major players in the container ecosystem are working swiftly towards adding new capabilities to their platforms. Kubernetes, the Google-backed open source project, has hit the 1.1 version, while Mesosphere is already managing production workloads. Docker is investing its core engine and tools to match the baseline features to provide an out-of-the-box experience to customers. Docker’s aim is to bundle all the required tools to enable customers to build, ship, and run containerized applications.
If you have been waiting to dip your toe in the container waters, this is the right time. You have all the required tools and capabilities available with Docker.