Learn DevOps basics with this free 2-hour Docker course
by Quincy Larson
Docker is a powerful DevOps tool for putting your apps into "containers."
You can run these same containers anywhere - on your laptop, on a server - even on a smart refrigerator if you want to.
And everywhere you run a container, the environment - and all its dependencies - will be identical.
This makes Docker ideal for running distributed applications.
This course will teach you Docker using a series of lectures with fun conceptual animations and illustrations.
And importantly, you'll be able to code along at home, right in your browser. The course includes an environment where you can tinker with Docker containers. You don't need to spin up your own servers or even install Linux yourself.
Here are some of the concepts and tools you'll learn through this free 2-hour course:
What is Docker?
How to install Docker
Basic Docker Commands
The Run command
Docker Environment Variables
How Docker Images work
CMD VS ENTRYPOINT
Networking with Docker
How to use Docker Compose
The Docker Registry
How you can also use Docker on Windows and Mac (most people use it on Linux by default)
How to use Docker on Mac
How to use Docker Swarm
And a little bit about Kubernetes and container orchestration, too
Here's a bit more about Docker from the freeCodeCamp Guide, in case you're unfamiliar with it. Either way, you should still do the course
Docker is an open-source tool that gives you the ability to build containers for your apps.
It includes an operating system, libraries, and everything you need to run your application. Then you will be able to deploy that same exact application - and its entire environment and dependencies - onto any machine.
Docker's lightweight structure lets you to run several containers on the same machine. A container image is a light-weight, stand-alone, executable package of a piece of software that includes everything needed to run it.
Docker's Core Features
Docker containers running on a single machine share that machine’s operating system kernel. They start instantly and use less computational power and RAM.
Docker images are built out of filesystem layers, and are able to share common files. This minimizes the space these images take up on disk, and make these images a lot faster to download.
Docker containers are based on open standards, and run on all major *nix distributions (Unix, Linux, etc. - including MacOS), Microsoft Windows, and on any infrastructure including VMs, bare-metal, and in the cloud.
Docker containers isolate applications from one another and from the underlying infrastructure. Docker provides a strong default isolation, so you can limit any problems with your app to a single container instead of an entire machine.
Container images are a lightweight, stand-alone, executable packages software that include everything you need to run it: code, runtime, system tools, system libraries, and settings.
Containerized software will always run the same, regardless of the environment.
Containers isolate software from its surroundings. That is, the differences between development and staging environments.
Ultimately, Docker helps reduce conflicts between teams running different software on the same infrastructure.
A note on Containers Vs. Virtual Machines
Containers virtualize the Operating System and make them more portable
Virtual Machines, by contrast, virtualize the hardware.
Containers are an abstraction at the application layer that packages code and dependencies together. VMs are an abstraction of physical hardware turning one server into many.