Cloud is significantly changing the IT paradigm and the adoption of new architectures (microservices) and technologies (containers, edge computing, AI) will transform enterprise IT services. These are the enablers of new ways to develop, test and deploy application services components, which promote the re-use of those components by isolating them and abstracting their dependencies from the underneath OS and infrastructure.
Docker technology and its orchestration capabilities play the main role in creating Container as a Service or CaaS, while Infrastructure as a service (IaaS) provides raw assets with high flexibility and Platform as a service (PaaS) offers an optimized set of components or solutions that can be used for use cases where the development environment dictates the rules.
CaaS can be seen as an element between IaaS and PaaS, which integrates them: driving CaaS adoption in the enterprise world requires the introduction of several functionalities to deliver mission critical IT services and to guarantee a high level of quality to sustain the business needs.
Docker is an open source software (as well as the brand of the company that today owns the commercial rights of it) that adds key functionalities on top of OS containers and can be defined as a platform for developers and system administrators to encapsulate application components in a container with all the related dependencies, exploiting the technology provided by the Linux kernel in terms of isolation and virtualization of resources at the OS level.
The “philosophy” of Docker is to build, ship and run any application, anywhere a Docker service is installed in the hosting Operating System. The Docker platform is composed of several elements, which are used together and serve a specific role:
- Docker Engine: is a lightweight runtime engine providing a rich set of functions to build, ship and run application components encapsulated in containers. The in-host daemon communicates with the Docker client to execute commands to perform all the required operations. Docker Engine is one of the most rapidly growing open source projects, and the software is available as an open source download or with a commercial support subscription.
- Docker Machine: in order to run Docker it is necessary to have the Docker Engine installed on one or more hosts (Docker nodes), and this is the role of the Docker Machine. It automatically sets up the Docker Engine with a compute resource provisioned from the supported infrastructure provider (using Docker Machine drivers) and then configures the Docker client to talk to the Docker Engines.
- Docker Swarm: provides native clustering capabilities to turn a group of Docker engines into a single, virtual Docker Engine. With these pooled resources, it is possible to scale out any application as though it was running on a single, huge computer.
- Docker Image: is an ordered collection of root filesystem changes and the corresponding execution parameters for use within a container runtime. Basically the Docker Image is the content of a running Container. Images are composed by layers, each containing a change applied to the overall image over the time.
- Docker Container: is a running instance of a Docker Image (the selected layer is usually the topmost one).
- Docker Trusted Registry: provides the functionality to store and manage Docker Images and to support security or regulatory compliance requirements.
- Docker Compose: provides the capability to define a multi-container application (micro-services based) with all of its dependencies and then spin it up using a single command. The applications structure and configuration are held in a single file, allowing a truly Infrastructure as Code implementation paradigm.
- Docker Universal Control Plane: offers an on-premises management solution for Docker apps – regardless of where they run.
.@Docker @Capgemini partner to help you drive down the cost of managing applications, to help you drive faster innovation rates and deliver new products and services to serve your customers. #DockerCon2019 pic.twitter.com/JthgdMLh6M
— Steve Singh (@SteveSSingh) April 30, 2019
Docker Enterprise as a Service (DEaaS), operated by Capgemini, is a containerized runtime environment supporting microservices, monoliths, synchronous, asynchronous and batch integrations, as well as cloud native applications. It uses a trusted registry to securely store and manage container images and it allows organizations to administer, partition and monitor their container cluster and applications.
DEaaS is GDPR compliant, secure, fully automated and cloud agnostic, enabling a choice of cloud providers and multi-cloud and hybrid strategies. Each customer has its own dedicated PaaS assuring data isolation, and it is also possible to include a variety of DevOps tools with DEaaS to create a complete solution for building in the cloud:
- Build: Docker Desktop, Crowd, Bitbucket, Jira, Confluence
- Test: SonarQube, Selenium
- Deliver: Nexus, Bamboo/Jenkins/GoCD
- Operations: Jira Service Desk, Rundeck, Kibana, ElasticSearch, Grafana, Prometheus