Inside Docker configuration management functions
Docker may not be a standard configuration management tool, but it possesses a set of capabilities that have made it a growing player in the CM market.
Docker provides IT systems and application containerization that enables the packaging, provisioning and management of code in an operations environment. Docker use is growing in organizations, due to its code management ability across DevOps and Agile deployments. Docker's customers include ADP, PayPal and Indiana University.
Although Docker configuration management (CM) is not archetypal, the containerization software has a set of capabilities similar to the functions of a standard CM system.
Docker is available in open source and enterprise versions. The open source version has been downloaded more than 450 million times.
The open source version consists of Docker Engine and Hub. The Docker Engine enables users to create, share and distribute images across an environment via Docker Hub. Docker manages container provisioning and portability so users don't need to worry about environment variables. Docker's ability to stop, swap and restart containers in situ without complex scripting improves problem identification and remediation.
Docker provides runC, a command-line interface (CLI) tool that spawns and runs containers to a specification as defined by the Open Container Initiative group. RunC essentially provides CLI-based configuration management for Docker. Combining the Docker Engine and runC, Docker provides a considerable part of the functionality in a CM system.
Docker also provides other open source components alongside Docker Engine, including:
- Docker Compose -- a means of defining multi-container applications;
- Docker Registry -- open source Docker container distribution;
- Docker Machine -- automated Docker container provisioning;
- Docker Swarm -- host clustering and container scheduling; and
- Kitematic -- a desktop user interface for Docker.
Docker configuration management is available as two enterprise offerings:
Docker Datacenter -- for installations on-premises, behind the firewall. Docker Datacenter costs $150 per instance per month for Business Day (i.e., business hours) support, and $300 per instance per month for Business Critical (i.e., 24/7) support. Each subscription can be paid yearly, discounted to ten months' price. If only Docker Engine is chosen, then subscriptions become $1,000 per instance per year for Business Day support and $2,000 per instance per year for Business Critical support.
Docker Datacenter consists of several interlinked modules:
- The Docker Engine underlying platform manages orchestration and networking, along with plug-ins, volumes and container runtimes.
- A Docker Trusted registry manages images and their distribution.
- A Docker Universal Control Plane provides app and cluster management.
Docker also manages security either directly through Docker Content Trust, or in conjunction with outside systems like roles-based access control systems, or security directories such as LDAP/AD.
The other enterprise version is Docker Cloud -- a hosted environment that can be used to provide a basis for continuous integration and delivery of projects into an organization's chosen platform, whether this be on-premises or onto a cloud provider's environment, such as Amazon Web Services. Docker Cloud costs start at $7 for five unmanaged repositories, or $15 per month per managed node, both with email support.
Although Docker configuration management capabilities are built in, the product is often used in conjunction with more orthodox CM tools such as Chef and Puppet. Although this joining adds the highly specialized capabilities of a pure CM tool, it is not necessary if an organization has the skills required to build and manage Docker containers throughout their lifecycle using Docker capabilities alone.
Docker has already hit critical mass in organizations of all sizes, and is widely supported via software vendors looking to containerize their offerings. As such, Docker is a logical choice for organizations looking to an Agile, DevOps future where continuous integration and delivery are key components of the technology approach.
For Docker, it is only a matter of time before it further improves its CM capabilities and can compete with the more established CM tools.