Learn about containers.
- [Instructor] So let's get started with understanding containers. Specifically, how they relate to devops and how we can leverage containers in the context of devops to create applications. So, we're going to get into the basics of containers in this part of the course. And first, let's talk about what containers are and what's important. Containers are just another way to deploy applications. So, it's a development paradigm where we can actually stick the application, along with some of the operating system stuff, inside a container and so it's self-contained and isolated into itself and therefore, we're able to move it from place to place.
So, portability is part of the advantage and I hear that a lot with containers. You're able to move it from cloud to cloud, platform to platform, device to device, and that makes sure that your investment in the application is protected. The value is that they're able to keep applications isolated and promote portability. Containers are not replacing virtualization. This is a common misconception. And we'll go through some container myths toward the end of the course. Where containers are just the ability to kind of deploy applications in a much better, architecturally elegant and durable way that provides portability and the ability to manage them better and distribute the applications better, things like that.
They don't replace virtualization. Why containers? Well, some of the common benefits we have would be agility, scalability/high availability, cost optimization, portability, that we just mentioned. Common use cases would be a CI/CD automation, autoscaling microservices architectures, containers as a service, and hybrid cloud architectures. And we'll go through these use cases later in the presentation. But focus on the benefits.
The agility aspect of containers, or the ability to kind of move them in and between platforms, really is the benefit of leveraging containers. Scalability and high availability is around leveraging container orchestration tools, like Kubernetes and Mesoshpere and things like that, and we'll go over them briefly later in the presentation. Also cost optimization, we're able to do more with less. And then portability which goes to agility. We're able to pick the platform and, since the application's isolated, along with the operating environment, we can move it from platform to platform without much of a problem.
So, if you're going to learn about containers, we always have to go to this cargo transport kind of thing which everybody talks about as to why containers are available. So we had multiple goods of services, multiple methods for transporting storage, vehicles and trucks and things like that, and ultimately, we had to figure out a way in which we could move a multiplicity of goods and services, so we came up with the standard container that is loaded with virtually any good and that stays sealed until it reaches a final delivery.
In between, it can be loaded and unloaded, stacked, transported efficiently over long distances, and transferred from one mode of transportation to another. So containers, it's admittedly kind of a weak analogy, they isolate a various things, such as our applications, from the outside world. But, they allow them to kind of work and play well together as containers since the outside of the container is standardized. It's the same size, and we can stack them, and we can move them, and they don't necessarily change in the standard way in which we're dealing with them. So, container advantages.
Well, Docker tooling makes Linux container technology easy, reliable, and accessible. Docker standard as well as the tools that are made by Docker. Better resource utilization, separation at process level not the OS. Dependencies packaged into layers. Multiple OSs and package version without the mess of conflicts and mismatches since they're isolated within the container. Portability, and that's always going to be the case. And, between environments, we can deal with dev, test, production. So, and that's kind of a link with devops as well.
Between providers on-prem, traditional systems, Amazon Web Services, Google, Azure, and anybody else that supports container run time. Allowing building of Immunable Infrastructure. Once an application is in production, it cannot be changed or modified, which is an advantage. Updates require proper change controls and code review. Enables faster mean time to revenue.
- Containers vs. virtual machines
- When vs. when not to use containers
- Building new apps with containers
- Moving existing apps to containers
- Example container applications
- Standards, tools, processes, and skills