1 00:00:06,740 --> 00:00:10,254 So why do you need to know about containers? Well, you need to 2 00:00:10,254 --> 00:00:13,769 know about them because containers in Linux are another way to start applications. 3 00:00:15,250 --> 00:00:20,079 So that's how I would like to define a container as an application that is 4 00:00:20,079 --> 00:00:24,909 started in an environment that is isolated by Linux kernel namespaces from a container image. 5 00:00:26,219 --> 00:00:29,699 There's two components in that definition that need some additional explanation. 6 00:00:30,839 --> 00:00:32,759 First component is the namespace. 7 00:00:33,920 --> 00:00:40,326 That is a level of isolation that is implemented by the Linux kernel. And that makes sure that 8 00:00:40,326 --> 00:00:46,733 within the container, only files, users and processes that are relevant to that container are available. And that's 9 00:00:46,733 --> 00:00:53,140 good news, because that means that your containerized application cannot go up into the operating system. 10 00:00:54,460 --> 00:00:57,990 The second component is a container image that contains 11 00:00:57,990 --> 00:01:01,520 all dependencies that are needed to run the application. 12 00:01:02,539 --> 00:01:07,659 And that means that you suddenly don't have a problem with dependencies anymore. They're just there. 13 00:01:08,799 --> 00:01:11,989 Container images are obtained through the container Registry. 14 00:01:12,489 --> 00:01:18,019 That's an online resource, little bit like a repository where anybody can post their container images. 15 00:01:19,349 --> 00:01:24,363 And a kernel that is provided by the host operating system as a container 16 00:01:24,363 --> 00:01:29,376 is really focusing on running the application. You do not need a kernel inside 17 00:01:29,376 --> 00:01:34,390 a container to run containers. There's a couple of requirements on a container host. 18 00:01:35,590 --> 00:01:38,579 The host that runs a container has the container runtime. 19 00:01:39,280 --> 00:01:43,275 The container runtime is a small program that starts a container. And 20 00:01:43,275 --> 00:01:47,270 there is a container manager software which allows you to manage them. 21 00:01:48,829 --> 00:01:54,579 Common container runtimes are containerd and CRI O. And common container managers are Docker and podman. 22 00:01:55,239 --> 00:01:59,674 Now, the funny thing is that nobody ever thinks about the container runtime that they need. 23 00:01:59,674 --> 00:02:04,109 You just install either Docker or Podman to get started with containers, and that's it. 24 00:02:04,750 --> 00:02:05,870 The runtime comes with it. 25 00:02:07,530 --> 00:02:12,669 Container technology itself is standardized by the oci, which is the Open Containers initiative. 26 00:02:13,659 --> 00:02:17,605 And this standardization means that the same container image can be used 27 00:02:17,605 --> 00:02:21,550 on a standalone platform, in a distributed environment or in cloud. 28 00:02:22,050 --> 00:02:26,430 And that also explains why containers so rapidly have become very popular. 29 00:02:27,150 --> 00:02:32,173 As a developer, you can develop an application on your local laptop, you can do the 30 00:02:32,173 --> 00:02:37,196 testing on your local laptop, and once you have proved that it works out all right, 31 00:02:37,196 --> 00:02:42,219 you can run the exact same application in a distributed platform like a cloud as well. 32 00:02:43,280 --> 00:02:47,949 And that is why containers have become the de facto standard for running applications nowadays.