At DockerCon 2016, held in Seattle, USA, the latest 1.12 beta version of Docker Engine was announced, which includes the integration of Docker Swarm to provide container orchestration. Additional announcements included: Docker for Mac and Windows has now been made public; a private beta for Docker for AWS and Azure has been opened; the release of an experimental ‘Distributed Application Bundle (DAB)’ JSON-based open file format for building all artifacts required to ship and deploy multi-container apps is now available; and a private beta for the new Docker Store and Docker Datacenter AWS Quickstart and Azure Marketplace Templates was opened.
The latest release of Docker, version 1.12, planned for release in July, will feature the integration of Docker Swarm into Docker Engine, which will enable orchestration of containers as part of the ‘built-in’ experience of Docker. Solomon Hykes, founder and CTO of Docker, stated that by adding this additional feature the Docker team believe that Docker Engine will become an orchestration building block, creating a model for engines to form a “self-organizing, self-healing pool of machines on which to run multi-container distributed applications”.
Orchestration is at the same stage today as containerization was before Docker. You either need an army of experts to build it, or you lock yourself to a monolithic platform which will drastically reduce your choice of suppliers. Three years ago we brought containerization into the mainstream by making it usable for non-experts, without lock-in. We think it’s time to do the same for orchestration.
The Docker 1.12 design is based on four principles:
- Simple yet powerful – Orchestration is a central part of modern distributed applications; “it’s so central that we have seamlessly built it into our core Docker Engine”.
- Resilient – Machines fail all the time. Modern systems should expect these failures to occur regularly and adapt without any application downtime.
- Secure – Security should be the default. Barriers to strong security, such as certificate generation and having to understand PKI, should be removed. However, advanced users should still be able to control and audit every aspect of certificate signing and issuance.
- Optional features and backward compatibility – All new features are optional, and no overhead (memory, cpu) will be incurred if they are not used.
New API objects have been added to Docker Engine Remote API to support this functionality, including Service and Node, and use similar terminology to existing orchestration systems like Kubernetes and CloudFoundry. Ben Golub, CEO of Docker, stated that this new functionality will be integrated with all Docker Engine downloads as of version 1.12, but in order to maintain backwards compatibility in the API, the ‘Swarm mode’ feature will be disabled by default.
Orchestration in Docker Engine aligns with our platform’s batteries included but swappable approach allowing users to continue using any third-party orchestrator that is built on Docker Engine.
Hykes announced that the Docker for Mac and Windows beta has now been made public, and the currently available download will include the beta version of Docker 1.12. Docker for Mac and Windows aims to provide a "seamless Docker development environment on Mac and Windows". The major features include: a faster and more reliable native development environment by using hypervisor support built into each platform, rather than VirtualBox; in-container debugging and development by improving volume support to automatically notify Docker Engine when a file changes and update it in the container; and native networking that enables Docker for Mac and Windows to work effectively with VPNs.
Also announced was the Docker for AWS and Azure beta, an “integrated, easy-to-deploy environment for building, assembling and shipping applications on the cloud”, that provides an efficient method to install, configure and maintain Docker deployments on AWS and Azure. The goals for Docker for AWS and Azure include: deploy a standard Docker platform to ensure teams can seamlessly move apps from developer laptops to Docker staging and production environments without the risk of incompatibilities or lock-in; integrate deeply with underlying infrastructure to make sure Docker takes advantage of the host environment’s native capabilities and exposes a familiar interface to administrators; and make sure the latest Docker versions are available for the associated hardware, OSs, and infrastructure deployed within public clouds, and provide "solid upgrade paths" from one Docker version to the next.
To complement the existing announcements, Golub also presented the release of an experimental ‘Distributed Application Bundle (DAB)’ JSON-based open file format for building and packaging all artifacts required to ship and deploy multi-container apps. A DAB contains a description of all the services required to run the application, and includes the Docker images to use, ports to expose, and the networks used to link services.
In addition to making deployments stable and repeatable, DABs also take away the tedium of creating many individual services comprising a complex app. This makes them a convenient abstraction on top of the service concept introduced in Docker 1.12.
A private beta for the new Docker Store has been opened, which aims to provide a marketplace for trusted and validated ‘Dockerized’ software. The Docker Store will feature free, open source and commercial software. The goals with Docker Store include: provide a scalable self-service system for ISVs to publish and distribute trusted and ‘enterprise-ready’ content; provide a publishing process that validates software quality, including security scanning, component inventory, the open-source license usage and use of best practices in image construction; provide enterprise users with compliant, commercially supported software from trusted and verified publishers that is packaged as Docker images; and provide search and browsing capabilities, including categorization.
Our goals with Docker Store are designed around bringing Docker users and ecosystem partners together.
The final announcements made included Docker Datacenter AWS Quickstart and Azure Marketplace Templates, which aims to provide “production-ready, high availability Docker Datacenter cloud deployments in just a few clicks.” The Docker Datacenter AWS Quickstart utilises CloudFormation templates, and the Azure Marketplace utilises pre-built templates in order “to make it easier than ever to deploy an enterprise Container-as-a-Service (CaaS) Docker environment on public cloud infrastructures”. Docker Datacenter includes Docker Universal Control Plane, Docker Trusted Registry (DTR), CS Docker Engine with commercial support and subscription to align to an organisation’s application SLAs.
The focus on the operational aspects of Docker was clear at DockerCon 2016. During a media lunch Golub stated that approximately 25% of attendees at the conference had role titles associated with an operations/sysadmin function. Golub stated that although “ops job may change” with the introduction of containers into an organisation, standardising the unit of deployment to be a container should remove the complexity of dealing with a variety of application packaging formats, and therefore make it easier to understand, secure, and manage applications deployed at scale.
Golub proposed that “any application written in the last 15 years could be containerised”, but stressed that it is not always prudent to do so. Golub shared stories of several enterprises that began their journey with using Docker by containerising entire monolithic applications, and then systematically decomposing them into microservice-style applications running in individual containers. Golub stated that Docker aims to inspire “incremental revolutions” and that organisations should aim to “meet in the middle” when deploying old and new applications.
Additional information on DockerCon 2016 can be found on the conference website, and also on the Docker Blog under the topic of ‘dockercon’.