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.
