You can help by commenting or suggesting your edit directly into the transcript. We'll review any changes before posting them. All comments are completely anonymous. For any comments that need a reply, consider emailing firstname.lastname@example.org.
We are experiencing playback issues from our video hosting provider. Please check back shortly.
Introduction to Docker
In this lesson, we'll discuss what containers are and what to expect from the remainder of the course.
Transcript(open in window)
[00:00] Have you ever spent time working on code or an application that works great on your machine, but not when it's moved to another? Have you ever wished that you could more quickly deploy applications between development and production environments? These are just a couple of real-world problems that can be alleviated through the use of containers. In this course, I'll introduce you to Docker containers and I'll demonstrate how to use them with Ignition. This course will assume that you already have basic Ignition competency and that you're comfortable using a command line interface. As I walk through the steps in these lessons, I'd suggest that you follow along with me on your computer and pause the video to catch up if needed. This first topic will introduce containers and I'll walk you through the commands needed to create and manage them and introduce you to a tool that allows us to easily create multi container applications. The next topic will apply that knowledge and we'll learn more as we build out of development environment with multiple containers. The final topic will provide self-contained how to lessons and subjects that may require extra attention.
[01:05] Regardless of where you are with your Docker experience, you should be able to find the right starting point. Alright now that we've given some context on what to expect in this course, let's jump right into it. What are containers containers are sandbox processes that contain all the elements that are necessary to run your software. There are multiple softwares out there that create and manage these containers on your machine, such as Docker, which I'll be using throughout this course. Containers are similar to virtual machines, but an important distinction is that virtual machines install an entire operating system on top of the host while containers isolate themselves in the host OS using kernel namespaces and c groups. What this means is the containers only contain what is needed to run your application. So they're lightweight and deployment is much quicker. Also since they're self-contained the differences between each developers host are no longer important. This isn't to say the VMs don't have their uses and you should abandon them in favor of containers. They're simply another option in our tool set.
[02:03] In order to create a container an image is needed. An image defines the dependencies, configurations, environment variables, etc that are needed to run an application. You can think of an image as a recipe. A container would then be the meal that ends up being cooked from that recipe. If changes are made to an image, that means that subsequent containers created from that image will reflect those changes. Docker provides a repository service called dockerhub where users can find and share container images for their applications. In the rest of the lessons in this course, I'll show you how to find images including the official ignition image and how to manage their life cycles on your machine. In order to do this, you'll need to install some software. I'll be using Docker Desktop, which is available on Windows, Mac, and Linux and is free for educational purposes. Docker Desktop contains the Docker Engine which allows us to use the command line interface to manage our containers, but it's also bundled with some extra tools including Docker Compose, which we'll also be using in this course.
[03:03] There are other options that you could choose but if you decide to use Docker Desktop as well, I'll provide a link in the description on where to download it. We'll also need a text editor. It doesn't matter what you use but I'll be using Visual Studio Code. If you'd like to use it as well, I'll also provide that link in the description. Now that we have an idea of what containers are and why we might want to use them. I'm sure you can barely contain your excitement. In the next lesson, we'll get started with some hands-on experience and we'll create a container that runs Ignition.