0: Introduction

Introduction to the course

Course Overview

1: History and Motivation

Examine the evolution of virtualization technologies from bare metal, virtual machines, and containers and the tradeoffs between them.

Motivation for Containers

What is a Container?

History of Virtualization

2: Technology Overview

Explores the three core Linux features that enable containers to function (cgroups, namespaces, and union filesystems), as well as the architecture of the Docker components.

Linux Building Blocks

Docker Application Architecture

3: Installation and Set Up

Install and configure Docker Desktop

Installation and Set Up

Running Your First Containers

4: Using 3rd Party Container Images

Use publicly available container images in your developer workflows and learn how about container data persistence.

Persisting Data with Containers

Using 3rd Party Containers

5: Example Web Application

Building out a realistic microservice application to containerize.

Application Overview

6: Building Container Images

Write and optimize Dockerfiles and build container images for the components of the example web app.

Docker Build Overview

NodeJS API

Golang API

React Client

Writing Good Dockerfiles

Choosing a Base Image

Additional Dockerfile Features

7: Container Registries

Use container registries such as Dockerhub to share and distribute container images.

Container Registry Overview

8: Running Containers

Use Docker and Docker Compose to run the containerized application from Module 5.

Docker Run Options

Sample App Docker Run

Sample App Docker Compose

9: Container Security

Learn best practices for container image and container runtime security.

Container Security

10: Interacting with Docker Objects

Explore how to use Docker to interact with containers, container images, volumes, and networks.

Images

Containers

Volumes

Networks

11: Development Workflow

Add tooling and configuration to enable improved developer experience when working with containers.

Developer Experience Wishlist

Hot Reloading

Debuggers

Tests

Continuous Integration (GitHub Actions)

Ephemeral Environments

12: Deploying Containers

Deploy containerized applications to production using a variety of approaches.

Deployment Considerations

Deploying with Docker Swarm

13: Course Wrap Up

Final words about the course.

Course Wrap Up