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.