Software containers are a key component of DevOps, microservices, and modern software engineering. This post will dive into an overview of software containers, how different business roles benefit from software containers, what the various use cases are, and the right tools to get the job done.
Contents
This content was contributed by Gaurav Malick.
What is Docker?
Docker is the world’s leading software container platform and is designed to benefit both developers and system administrators, making it a part of many DevOps. Docker is a shipping container system for applications and central to the information in this blog post.
Developers use
- Docker when collaborating on code with the co-workers because all the dependencies run in containers, eliminating “works on my machine” problems.
- Docker to automate the repetitive tasks of setting up and configuring development environments
- Docker to reduce onboarding time for a new co-worker
Operators use
- Docker to run and manage apps side-by-side in isolated containers to get better compute density
- Docker to streamline software delivery
- Docker to scale apps in real-time
Enterprises use
- Docker as a Containers-as-a-Service platform
- Docker to build agile software delivery pipelines to ship new features faster, more securely and with confidence for both Linux, Windows Server, and Linux-on-mainframe apps
Docker Use Cases
Modernize Traditional Apps
Docker Enterprise Edition increases security and portability of existing apps while saving costs
- monolithic apps benefit from Docker with enhanced security from container isolation, container portability, and reduced costs
- once containerized, these apps can be augmented with additional services or transitioned into a microservices architecture
Continuous Integration and Deployment (CI / CD)
Accelerate app pipeline automation and app deployment and ship 13X more with Docker.
- Docker provides a consistent environment for the application from dev through production, easing the code development and deployment pipeline.
- Each deployment is a new set of containers, and it’s easy to roll back by deploying containers that reference previous images
Microservices
Accelerate the path to modern app architectures
- Docker and Microservices play well together
- Docker helps in packaging microservices not just as an image but making it easier for your development team, testing team and possibly even your deployment team to just take the image and deploy your microservices-based app
IT Infrastructure Optimization
Get more out of your infrastructure and save money
- Compared to VMs, Docker containers are lightweight to a large extent
- Docker configuration can also be used in a variety of environments. This decouples infrastructure requirements from the application environment.
Hybrid Cloud
Avoid Lock-In and Seamlessly Move Across Clouds
- Every IaaS/PaaS provider from Amazon to Google supports Docker
- The Docker platform is infrastructure independent and ensures everything the app needs to run is packaged and transported together from one site to another
What is a container?
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.
Docker containers running on a single machine share that machine’s operating system kernel; they start instantly and use less compute and RAM. | |
Docker containers are based on open standards and run on all major Linux distributions, Microsoft Windows, and on any infrastructure including VMs, bare-metal and in the cloud. | |
Docker containers isolate applications from one another and from the underlying infrastructure and provide the strongest default isolation to limit app issues to a single container instead of the entire machine. |
Containers vs Virtual Machines
Containers
- Are regarded as more resource-efficient
- Offer higher-level isolation, with many applications running under the host operating system, all of them sharing certain operating system libraries and the operating system’s kernel
- Have more a futuristic feel — a young and promising technology that doesn’t necessarily have every kink worked out.
- Can be created much faster than virtual machines
Virtual Machine
- Virtual machines offer the security of a dedicated operating system and harder logical boundaries.
- VMs excel at providing extreme isolation
- With a VM, a hypervisor talks to the hardware as if the virtual machine’s operating system and application constituted a separate, physical machine
- Virtual machines are a highly developed and very mature technology, proven in running the most critical business workloads
Benefits of Containers
Benefits are apparent across an Organization: from developers and operations to QA
- Speed
- Consistency
- Density and Resource Efficiency
- Flexibility
References
Have questions about DevOps software containers?
Ask us in the comments below!
[embedit snippet=”after-article-getresponse”]