What are containers
• Containers are a way to package software in a format that can run isolated on a shared operating system.
• A container wraps an application in a complete package that contains everything to run the application – code, libraries, dependencies, runtimes.
• A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows-based apps, the containerized software will always run the same, regardless of the environment
• Containers isolate software from its surroundings, for example, differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.
What is Docker
• Docker is a leading platform for Containerization of the application
• Docker allows you to package all pieces of your application into a single container so that your application will run same everywhere without worrying about the environment dependency and complexities.
• Docker is a tool that is designed to benefit both developers and system administrators, making it a part of many DevOps.
• For developers, it means that they can focus on writing code without worrying about the system that it will ultimately be running on.
• In a way, Docker is a bit like a virtual machine. But unlike a virtual machine, rather than creating a whole virtual operating system.
• It is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
Containers Vs Virtual Machine
• Containers are an abstraction at the app layer that packages code and dependencies together.
• Containers take up less space than VMs
• Virtual machines (VMs) are an abstraction of physical hardware turning one server into many servers
• Each VM includes a full copy of an operating system. VMs can also be slow to boot
Docker Advantages
• Automation of repetitive and tedious deployment tasks.
• Faster onboarding of new resource.
• Faster shipment of new features and fixes without downtime.
• Easy and real-time scaling of application.
• Easy Distribution, Share, and Configuration of applications.
• High security out of the box.
• Improve efficiency of DevOps.
• Modernize traditional apps faster and without investing huge without going through complete SDLC.
Docker Disadvantages
• Better performance than Virtual Machines but slower than Bare-Metal.
• Isolation and security are lesser as compared to the Virtual Machines.
• Storing data such that it is available even after the container is shut down is quite complicated.
• Not all applications benefit from containers – Cannot be blindly adopted for each and every application.
Comparison between AWS, Google, and Azure Cloud Containerization
AWS Cloud – The AWS Cloud provides Amazon EC2 Container Services (Amazon ECS) which support container application and so let you run your Docker containers on a managed cluster of Amazon EC2 instances.
Google Cloud – Google offers Google Container Engine which lets you run Docker containers on Google Cloud.
MS Azure – Microsoft also offers Azure container service to allow deployment, management, and execution of Container applications.
Docker and SDL WEB
With the release of SDL Web, the Dockerization becomes quite easy
SDL Web is quite Docker friendly because of the following:
· Micro-service based architecture.
· Parameterized config files.
· License-free web application.
SDL WEB – Advantages of using Docker
- Great time and effort saving for DevOps
- Complexities of SDL CD Deployment is encapsulated and allows the non-Tridion experts to do the deployment.
- Scaling of servers is quite easy.
- The overall cost of resources will be optimized as compared to Virtual Machines.
Happy Coding and Keep Sharing !!!!