Welcome to Introduction to Docker! In this Course, you'll learn the foundations of using Docker. You'll learn about images and containers, port mapping, Docker networks, volumes, tagging, and more. By the end of the Course, you should be comfortable with the basic functionality of Docker.
Containers have existed in some form for a while now. However, it was Docker that brought them into the mainstream. And Docker containers have become synonymous with the word "container" because of their popularity. Docker containers have made it easier for many developers and operations teams to build, ship, and deploy their code.
While Docker containers may only be a transitional technology between virtual machines and unikernels (or something similar), they currently remain one of the more effective ways to ship code, which is why having an understanding of Docker has become almost a requirement for technical engineers.
Learning Objectives
- You should understand what Docker is
- You should understand how to create Docker images
- You should understand how to map ports between Docker and the Host OS
- You should understand the basics of Docker networking
- You should understand how to use volumes for persistent storage
- You should be able to tag images
Intended Audience
- DevOps Engineer
- Developer
- Site Reliability Engineer
- Operations Engineer
Resources
The Course assets
https://github.com/cloudacademy/introduction_to_docker
Docker installation instructions
https://docs.docker.com/engine/installation/
If you want to use Vagrant
https://www.vagrantup.com/docs/index.html
The IDE used in the Course
https://code.visualstudio.com/
A Dockerfile reference
https://docs.docker.com/engine/reference/builder/
Tooling for the Go language used in the demos
https://golang.org/
I remember in my early development career, I was working on a basic CMS-backed website. I worked on the backend code and the front-end developer handle, the HTML, CSS, and JavaScript. We were able to get the site up and running rather quickly, well ahead of schedule. Everything worked well on the development laptops.
It all worked well on our development server, and it even worked great on our staging server. You know where it didn't work well? In production. We handed it over to the client, whose IT staff insisted on getting it up and running in their environment for themselves. They ran into issues getting everything up and running.
Eventually, they had us configure everything, which turned out to be nontrivial, and a time-consuming task, because there were issues with the versions of some of the libraries that the app was using. Now, this was a long time ago in the dark ages before DevOps was a word, before AWS had a service for everything imaginable, and before Docker existed.
Now, sure, there are things that we could have done to make the handoff easier and hindsight is 20/20, after all. If we could have bundled all of our code, along with all of the dependencies into one self-contained executable entity, then that really would've saved hours of work. Now this scenario is something that Docker can help with, and it's just one of the reasons why Docker has become so popular.
Welcome to Introduction to Docker, where we're going to go through some of the concept and features of Docker. A bit about me. I'm a DevOps engineer with a passion for security, for containers and automation, among other tech topics. I'm looking forward to this course because Docker is really more than just a buzzword, it's also a really useful technology for both developers and operations.
So, who is this course for? If you are a developer, a DevOps engineer, a site reliability engineer, an ops engineer, or some sort of similar role, then this course is going to be valuable for you. As always, I've made some assumptions about what you should know before taking this course. First, you'll want to be familiar with containers as a concept.
Now if you're not yet, I recommend checking out the course called Introduction to Containers. Second, you're going to want to be comfortable using the command line. And third, an understanding of Linux is going to be incredibly helpful to contextualize some of the concepts. Finally, if you have some development experience, it's really going to make it a lot easier to test the stuff out for yourself.
However, if you're on the operations side of things, you can use the code that I've created for these demos. I'll include a link to the source code in the course description, so you can find it there. When creating this course, I had some learning objectives in mind. Now by the end of the course, you should know what Docker is, you should understand how to create Docker images.
You should understand how to map ports between the Docker, container, and the Docker Host OS. You should understand the basics of Docker networking. You should understand how to use volumes for persistent storage, and you should be able to tag images. So, at a minimum, that's what I hope you'll get out of this course.
To meet these learning objectives, here are the lessons. First, we'll cover what Docker is, followed by an overview of the Docker architecture. Then we'll walk through installing Docker on a CentOS VM. After that, we'll create a container. Then, we're going to walk through the differences between images and containers.
And then we're going to create images based on Docker files. Then, we'll create images based on changes made to an existing container. After that, we'll cover port mapping, then we're going to talk about networking options. And then we'll cover volumes followed by tagging, and finally we'll wrap up with a summary of what we've covered.
Okay, before we get started, you'll want to adjust the speed of the video in the player to find the right setting for you. I like to watch through on two-X, but you may have your own preference. So, feel free to play around with the settings. Also, I have added several links to the course description for reference.
So, when I mention them in the course, you know where to find them. Also, I love hearing from you all. So, if you want to reach out, you can reach me at support@cloudacademy.com, or you can find me, I'm @sowhelmed on Twitter. Good or bad, all of the feedback helps me to create better courses for you, so I hope to hear from you.
Alright, if you're ready to start learning, then I'll see you in the first lesson.
Ben Lambert is a software engineer and was previously the lead author for DevOps and Microsoft Azure training content at Cloud Academy. His courses and learning paths covered Cloud Ecosystem technologies such as DC/OS, configuration management tools, and containers. As a software engineer, Ben’s experience includes building highly available web and mobile apps. When he’s not building software, he’s hiking, camping, or creating video games.