1 00:00:05,390 --> 00:00:10,270 ‫All right before we jump into images, let's talk about what this section is all about. 2 00:00:10,310 --> 00:00:14,510 ‫First, we're going to discuss the basics of images and the concepts that you're going to need 3 00:00:14,780 --> 00:00:19,780 ‫and what is actually in an image and, just as importantly, what isn't in one. 4 00:00:19,890 --> 00:00:25,280 ‫Then we're going to talk a little bit about how to find images on the Internet and we'll actually go and look 5 00:00:25,280 --> 00:00:31,790 ‫at some, dive into that whole process of finding good images and how to manage those images once we've 6 00:00:31,820 --> 00:00:36,860 ‫downloaded them or created them on our own machines. Then we'll jump into the fun part of actually 7 00:00:36,860 --> 00:00:39,240 ‫making our own images. 8 00:00:39,260 --> 00:00:44,660 ‫So before we start playing with images and learning how to use them for containers, we probably want 9 00:00:44,660 --> 00:00:51,050 ‫to step into what exactly is in an image and what isn't. The way I like to explain it is very simple. 10 00:00:51,140 --> 00:00:57,400 ‫It's the application binaries and dependencies for your app and the metadata on how to run it. 11 00:00:57,410 --> 00:01:02,120 ‫But if we went to the official definition, it would be "an image is an ordered collection of root filesystem 12 00:01:02,120 --> 00:01:07,070 ‫changes and the corresponding execution parameters for use within a container runtime." 13 00:01:07,370 --> 00:01:09,300 ‫But I like my version better. 14 00:01:09,320 --> 00:01:14,900 ‫Inside this image, there's not actually a complete OS. There's no kernel. There's no kernel modules 15 00:01:14,900 --> 00:01:16,160 ‫like drivers. 16 00:01:16,160 --> 00:01:22,460 ‫It's really just the binaries that your application needs because the host provides the kernel. 17 00:01:22,460 --> 00:01:26,960 ‫That's one of the distinct characteristics around containers that makes it different from a virtual 18 00:01:26,960 --> 00:01:30,500 ‫machine; it's not booting up a full operating system. 19 00:01:30,530 --> 00:01:35,530 ‫It's really just starting an application, and that image can be really small. 20 00:01:35,540 --> 00:01:37,200 ‫It can be a single file. 21 00:01:37,310 --> 00:01:43,700 ‫If you're, for instance, using Go, one of Go's features is that it can build a static binary and have 22 00:01:43,700 --> 00:01:46,310 ‫a single file as your application. 23 00:01:46,310 --> 00:01:51,230 ‫So you could do that. Or you could have a very big image that's actually using some distribution like 24 00:01:51,230 --> 00:01:57,560 ‫Ubuntu with its own package manager built in, and where you've installed Apache, and PHP, and your source 25 00:01:57,560 --> 00:01:59,890 ‫code, and all the added modules you need. 26 00:01:59,990 --> 00:02:01,460 ‫You can have it multiple gigabytes.