Docker as a Service
In the previous posts we learned about Docker, containers, and working with containers, In this post we will learn about Containers as a Service (CaaS) in general and how Docker realizes CaaS.
1. Why Docker as a Service?
Take a typical developer work-flow involving Docker. It will be typically as below. This is based on the reference workflow provided in the Docker docs.
As you can see from the above workflow, there is quite some IT activity to be performed if Docker is used for app development at scale in an organization.
- Infrastructure to host Docker containers and all the other related tools provided by Docker.
- Provide compute, storage and networking for the containers as needed.
- Application lifecycle support and tooling.
- Monitor utilization of compute, storage and networking and stop/start containers as needed.
- Address scaling needs of the containers. Handle orchestration of containers at enterprise scale.
These issues are significant at enterprise scale. The existing solution has been for administrators to use infrastructure-as-a-service (IaaS) like Amazon’s AWS EC2 and handle the above issues manually or through home-built tools. However, Docker now provides the Docker container-as-a-service to address the above issues.
2. Container as a Service (CaaS)
So, what is CaaS? It is a cloud service model that enables users to order and use containerization infrastructure from a cloud provider using a pay-as-you-go model. Docker CaaS is an example. Amazon EC2 Container Service (ECS) by AWS is another example.
As a cloud service model, CaaS probably sits as a subset of IaaS in that it enables a container-based infrastructure for it’s users. A CaaS offering usually seeks to provide the following features to it’s users.
- Manage containers through an API or web interface.
- Monitor compute, storage and network resources used by the containers.
- Provide cluster management and orchestration capabilities for containers.
- Provide security and governance controls.
- Optionally, be cloud agnostic so that the CaaS can be shifted across cloud providers or from in-premises to cloud.
3. Docker CaaS
Docker’s CaaS offering called Docker Datacenter packages Docker’s tools to provide developers and IT with a consistent container infrastructure. This is a commercial offering aimed at enterprises and provides the following features.
- Brings well known open source Docker tools under a CaaS umbrella – Docker Engine, Docker Compose, Docker registry, Docker Swarm.
- Adds commercial offerings – Universal Control Pane and Trusted Registry.
- Ability to deploy the CaaS in-premises or cloud.
- A private trusted docker registry for managing images.
- Cluster management and orchestration capabilities through Swarm and Universal Control Pane.
- Tools for the application development lifecycle, continuous integration and deployment.
- Provides security in the application lifecycle all the way from from dev to production stages.
Refer to the Docker Datacenter pages by Docker for more information about providing Docker as a service.
In this short post, we understood the need for a “Docker-as-a-service” solution to handle containerized application development needs at scale for an organizations. We briefly understood the features provided by a CaaS service in general. Then we briefly discussed Docker’s CaaS offering called the Docker Datacenter that offers Dockers tools as a service to developers and IT administrators.