What are containers and why do you need them?
This blog explains the answers to these questions:
- Why should I care about containers?
- What are containers?
- Are containers the same as microservices?
- What is an example of a microservices application?
- What is a Docker container?
- What are container orchestration and Kubernetes?
- What is the difference between containers and virtual machine images?
- How to get started with containers?
- Where can I run my containers?
- What is Red Hat OpenShift on IBM Cloud?
Why should I care about containers?
Different organizations have followed various container adoption. Some are in the learning stage while others are midway.
These are the advantages of containers:
- Faster time to market:
Organizations are able to speed up delivery of new services with development and operational agility. Helps organizations maintain their competitive edge.
- Deployment velocity:
Development to deployment is done quicker. Containerization breaks down barriers for DevOps teams to accelerate deployment times and frequency.
- IT infrastructure reduction:
Reduce your costs by increasing your application workload density, getting better utilization of your server compute density, and reducing software licensing costs.
- IT operational efficiency:
Gain more operational efficiency by streamlining and automating the management of diverse applications and infrastructure into a single operating model.
- Gain freedom of choice:
Package, ship, and run applications on any public or private cloud.
What are containers?
A shipping container is the best analogy to understand containers. The shipping industry standardized on a consistent size container. Now, the same container can move from a ship to a train to a truck without unloading the cargo. The container contents do not matter.
Just like a shipping container, a software container is a standardized package of software. Everything needed for the software to run is inside the container. The software code, runtime, system tools, system libraries, and settings are all inside a single container.
Are containers the same thing as microservices?
Microservices is an architectural style. A microservices architecture structures an application by using as a collection of loosely coupled services, which deliver specific business capabilities. Containers help make it happen. Containers and microservices go hand in hand.
What is an example of a microservices application?
Netflix was one of the first companies to begin using containers extensively about ten years ago. They rewrote the applications that ran their entire video service by using a microservices architecture. In 2017, Netflix estimated that it employed around 700 microservices to control each of the many functions that make up its service.
A few of them are:
- Video selection:
A microservice, in a container, provides your phone, tablet, computer, or TV with the video file to play and at a video quality based on your internet speed.
- Viewing history:
One microservice remembers what shows you watch.
- Program recommendations:
A microservice takes a look at your viewing history and uses analytics to recommend movies.
- Main menu:
One microservice provides the names and images of these movies shown on your main menu.
- Billing: Another microservice deducts the monthly fee from your credit card.
Netflix members stream more than 140 million hours of content every day, with 182.8 million subscribers in 190 countries. At this scale every few seconds their applications are put to the test. Containers work for small and the largest of companies.
What is a Docker container?
Docker is the name of an open source containerization platform that you can use to create and run containers. Docker has been around since 2008. There are other container options, but most believe Docker won the container war. Docker allows you to package, ship, and run applications on any public or private cloud. Being able to run applications anywhere helps you avoid vendor lock-in and move to a new environment anytime.
What are container orchestration and Kubernetes?
Kubernetes is an open source system that orchestrates your containerized applications. Kubernetes scales your application up or down. Kubernetes rolls out changes and upgrades to your application. If something goes wrong, Kubernetes rolls back the change and restarts the containers that failed, replaces containers when nodes die, and kills off containers that don’t respond to your health check. This management saves resources without sacrificing availability and provides auto load-balancing.
What is the difference between containers and virtual machine images?
A virtual machine (VM) is software that emulates a computer system. With a VM, your team can run what appear to be multiple machines on a single computer. If you need to run software on a different type of hardware or operating system, a VM provides that option without using additional hardware.
The primary difference between a container and a VM is that with a VM, the team creates virtual environments – containing operations systems – where different types of software can run. A container, however, isolates the software from the environment and the operating system, enabling it to run almost anywhere.
How to get started with containers
The best way to start is to start – with one container and then expand.
Here are 3 ways:
Migrate and expand:
Lift-and-shift is the process of containerizing an on-premises application to lift it (usually from a data center) and then shift it somewhere else, which is usually a public or private cloud. Note that lift-and-shift is not refactoring or breaking apart your application. It is putting all, or most, of the application into a single container.
A more aggressive approach is to take your monolithic application and refactor it into microservices containers. This method is moving from one development approach to another.
New development: Some organizations choose to start all new development by using containers.
Where can I run my containers?
There are three different types of cloud environments to consider:
A public cloud is a multi-tenant environment, but is fully managed and provides usage-based pricing. IBM Cloud, AWS, and Azure are public clouds. You can run your IBM Cloud Paks in any of these clouds.
A dedicated cloud provides the benefits of a public cloud with dedicated infrastructure. A dedicated cloud meets many industry regulatory requirements. Also, you are not sharing compute capabilities with others.
A private cloud provides you the benefits of cloud computing, but behind your firewall. Red Hat OpenShift on IBM Cloud is a comprehensive service that offers fully managed OpenShift clusters on the scalable and reliable IBM Cloud platform. You get the keys, but it runs in a secure IBM data center.
What is Red Hat OpenShift on IBM Cloud?
Red Hat OpenShift on IBM Cloud brings Containers, Docker, Cloud Paks, and Kubernetes all together for you, so you can focus on developing and managing your applications. It is directly integrated into the same Kubernetes service that maintains 25 billion on-demand forecasts daily at The Weather Company.
Containers are building blocks for the future. From delivering applications more quickly, to supercharging development to deployment, to reducing infrastructure and software costs, containers provide both small and large organizations with real business results.