1
00:00:02,260 --> 00:00:05,910
So, let's start with the most important question

2
00:00:05,910 --> 00:00:06,743
right away.

3
00:00:06,743 --> 00:00:09,940
What exactly is Docker?

4
00:00:09,940 --> 00:00:14,090
Well Docker in the end is a container technology.

5
00:00:14,090 --> 00:00:18,260
It's a tool for creating and managing containers. Okay.

6
00:00:18,260 --> 00:00:20,680
So that's clearly is a nice sentence

7
00:00:20,680 --> 00:00:22,660
but what exactly does it mean?

8
00:00:22,660 --> 00:00:25,900
What's a container in software development

9
00:00:25,900 --> 00:00:29,070
and why might we want to use it?

10
00:00:29,070 --> 00:00:32,430
Well a container in software development

11
00:00:32,430 --> 00:00:35,650
is a standardized unit of software,

12
00:00:35,650 --> 00:00:38,940
which basically means it's a package of code

13
00:00:38,940 --> 00:00:41,860
and that that's important that dependencies

14
00:00:41,860 --> 00:00:45,040
and tools required to run that code.

15
00:00:45,040 --> 00:00:48,727
So for example, if you're building a nodeJS application

16
00:00:48,727 --> 00:00:51,960
nodeJS is a JavaScript run time

17
00:00:51,960 --> 00:00:55,940
which could be used to execute JavaScript code on a server.

18
00:00:55,940 --> 00:00:58,160
If you had such an application

19
00:00:58,160 --> 00:01:00,640
with a container built with Docker,

20
00:01:00,640 --> 00:01:03,560
you could have your applications source code

21
00:01:03,560 --> 00:01:07,330
in that container, as well as the nodeJS runtime

22
00:01:07,330 --> 00:01:11,710
and any other tools that might be needed to run that code.

23
00:01:11,710 --> 00:01:14,740
And the advantages that the same container

24
00:01:14,740 --> 00:01:16,910
with the same nodeJS code

25
00:01:16,910 --> 00:01:19,580
and the same nodeJS tool,

26
00:01:19,580 --> 00:01:21,100
so to the same nodeJS runtime

27
00:01:21,100 --> 00:01:24,110
with always the same version will always

28
00:01:24,110 --> 00:01:25,590
and that's the key thing,

29
00:01:25,590 --> 00:01:29,960
will always give you the exact same behavior and result.

30
00:01:29,960 --> 00:01:31,530
There are no surprises

31
00:01:31,530 --> 00:01:33,730
because it's all baked into the container.

32
00:01:33,730 --> 00:01:35,710
It's always the same.

33
00:01:35,710 --> 00:01:39,070
But maybe it's even easier to understand this concept,

34
00:01:39,070 --> 00:01:41,000
if we take a step back.

35
00:01:41,000 --> 00:01:43,520
Think about a picnic basket.

36
00:01:43,520 --> 00:01:46,890
A picnic basket contains everything you need to have.

37
00:01:46,890 --> 00:01:49,060
Well, a picnic dinner in the park,

38
00:01:49,060 --> 00:01:51,640
something like this, it contains the food

39
00:01:51,640 --> 00:01:53,830
and it contains the dishes which you need.

40
00:01:53,830 --> 00:01:56,480
And therefore you can take that basket

41
00:01:56,480 --> 00:02:00,150
and take it everywhere where you wanna have that picnic

42
00:02:00,150 --> 00:02:01,440
and you're ready to go.

43
00:02:01,440 --> 00:02:03,430
You have it all in that basket.

44
00:02:03,430 --> 00:02:06,260
You can also share that basket with a friend

45
00:02:06,260 --> 00:02:08,860
and that friend can have that same picnic,

46
00:02:08,860 --> 00:02:10,610
you would have had otherwise.

47
00:02:10,610 --> 00:02:12,590
There are no surprises.

48
00:02:12,590 --> 00:02:14,190
You have the dishes and the food.

49
00:02:14,190 --> 00:02:16,130
You don't have to look for dishes

50
00:02:16,130 --> 00:02:17,670
at the place where you wanna eat.

51
00:02:17,670 --> 00:02:21,030
And maybe then you have soup with you

52
00:02:21,030 --> 00:02:23,320
might be strange with a picnic, but whatever.

53
00:02:23,320 --> 00:02:26,060
And then you don't have the dishes for eating soup.

54
00:02:26,060 --> 00:02:29,520
If you pack your own picnic basket, it's all in there

55
00:02:29,520 --> 00:02:32,650
and that's the idea behind the picnic basket.

56
00:02:32,650 --> 00:02:36,160
It's the same idea behind containers and Docker,

57
00:02:36,160 --> 00:02:38,460
which is just a tool for creating

58
00:02:38,460 --> 00:02:40,590
and managing these containers.

59
00:02:40,590 --> 00:02:43,410
Now the a term container might be strange at first,

60
00:02:43,410 --> 00:02:45,810
because if you hear about a container,

61
00:02:45,810 --> 00:02:48,290
you might think about something like this.

62
00:02:48,290 --> 00:02:51,180
At least that is what I know as a container,

63
00:02:51,180 --> 00:02:54,190
but actually it's not a bad comparison.

64
00:02:54,190 --> 00:02:57,000
This is a container we would load onto ships

65
00:02:57,000 --> 00:03:00,360
or trucks to move goods around.

66
00:03:00,360 --> 00:03:02,470
Well, and it's the same idea as with Docker

67
00:03:02,470 --> 00:03:04,110
or containers still.

68
00:03:04,110 --> 00:03:07,320
We have standardized containers here like this

69
00:03:07,320 --> 00:03:10,530
and we can fit various goods into these containers

70
00:03:10,530 --> 00:03:13,930
but they are then self-contained and isolated.

71
00:03:13,930 --> 00:03:15,560
The goods in one container

72
00:03:15,560 --> 00:03:18,290
don't get mixed with goods from another container.

73
00:03:18,290 --> 00:03:20,150
If you need something like cooling,

74
00:03:20,150 --> 00:03:22,050
it can be built into the container.

75
00:03:22,050 --> 00:03:24,820
And therefore the container works standalone

76
00:03:24,820 --> 00:03:28,210
and it can be put onto any ship or any truck,

77
00:03:28,210 --> 00:03:30,350
which is able to handle containers.

78
00:03:30,350 --> 00:03:33,760
And that's exactly the same with Docker containers.

79
00:03:33,760 --> 00:03:36,330
We have our units of software,

80
00:03:36,330 --> 00:03:38,350
our packages with code

81
00:03:38,350 --> 00:03:40,890
and with the dependencies to run this code,

82
00:03:40,890 --> 00:03:44,190
and we can then take it anywhere where Docker runs

83
00:03:44,190 --> 00:03:48,730
and we will then be able to run exactly the same application

84
00:03:48,730 --> 00:03:51,700
with the same environment, wherever that is.

85
00:03:51,700 --> 00:03:55,490
We don't need to worry about installing any extra tools

86
00:03:55,490 --> 00:03:58,470
in that place where we wanna run our application

87
00:03:58,470 --> 00:04:00,850
because it's all in the container.

88
00:04:00,850 --> 00:04:02,660
That is what containers are,

89
00:04:02,660 --> 00:04:04,410
and that is what Docker is about.

90
00:04:04,410 --> 00:04:07,000
Because Docker is just the tool

91
00:04:07,000 --> 00:04:09,190
for building these containers.

92
00:04:09,190 --> 00:04:12,100
Now, the good thing is that support for containers

93
00:04:12,100 --> 00:04:15,130
is built into modern operating systems

94
00:04:15,130 --> 00:04:18,430
or at least there it's easy to get started with them,

95
00:04:18,430 --> 00:04:22,450
and Docker can be installed on all modern operating system

96
00:04:22,450 --> 00:04:23,890
to then work with it there.

97
00:04:23,890 --> 00:04:25,530
And Docker then in the end

98
00:04:25,530 --> 00:04:28,060
is a tool that simplifies the creation

99
00:04:28,060 --> 00:04:31,200
and management process off these containers.

100
00:04:31,200 --> 00:04:33,940
You wouldn't need it to create containers

101
00:04:33,940 --> 00:04:36,890
but it's the de facto standard for doing that

102
00:04:36,890 --> 00:04:40,123
since it makes that task so super simple.

