Containers are the basis for so many modern applications that you cannot really ignore them anymore. If you are not familiar with them you are missing out on something big. Something useful to overcome many limitations suffered by legacy monolithic applications. And something real that the community is leveraging with real benefits.
Containers are not just light-weight Virtual Machines. In fact, many times they tend to run on top of VMs, so don’t let anyone confuse you about this. Containers do not run on top of a hypervisor, but directly over the OS kernel, so yes, they are lighter than VMs. They boot really fast and use very low memory and CPU, which is great because you can optimize resources. But containers are not only that…
One of their key benefits is they offer a very good packaging mechanism to isolate software from the underlying environment. Developers package their applications with the required dependencies and versioned libraries, so Operations teams can deploy them in multiple different environments with no change at all.
How do containers work?
Applications are composed of multiple containers interacting via APIs. This makes each container independent in terms of implementation. They could use different programming languages, databases or frameworks. It is all good while they respect the defined APIs.
Applications become really elastic, as container orchestrators can easily auto-scale horizontally parts of it depending on the specific load measured in real-time.
From the security standpoint they also provide isolation between applications and a very small attack surface.
So, everything sounds fantastic but… it looks like a brand new (and challenging) world, huh?
Well, if you are like me, you like to learn by doing. Getting your hands dirty and testing things out is the way to really understand how things work.
So let’s do it! We have created some comprehensive labs on Docker, so you can get a nice overview on how containers work.
We will cover the following topics:
1. The Basics
2. Build your own image
2.2 With a Dockerfile
3. Dockerhub image registry
4. Container Networking
4.3 User networks
5.1 Sharing between host and container
5.2 Sharing between containers
6. Docker Compose
6.2 Load balance
7. Orchestration with Docker Swarm
7.1 Single-service stack
7.2 Multi-service stack
7.3 Overlay networking
And you won’t even need to install anything on your laptop if you don’t want to!
Everything is included in the following Cisco Learning Labs:
Please go through them and let us know what you think in the comments or up on Twitter @JulioDevOps.