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
  • Docker Labs
  • The Run command
  • Docker Environment Variables
  • How Docker Images work
  • Networking with Docker
  • Docker Storage
  • 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

You can watch the full video course on the YouTube channel (2 hour watch).

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.
  • Again, containers are not VMs.

Once again, I encourage you to take the full course. You can watch the full video course on the YouTube channel (2 hour watch).