Finally, a Docker tutorial
that dives deep

Learn how to use Docker in development, testing, and production.

Get started immediately! You'll receive course modules
Dockerizing Your Applications and get updates on any new announcements!

Want more? Learn more about containers!

  free willy

If you're tired of diving into incomplete / outdated documentation, or getting no response to your questions, this course is for you!

Taylor 'The Man' Otwell

Taylor Otwell, creator of Laravel

What You'll Learn

This is a comprehensive course in the many uses of Docker.
From playing to developing, testing to deploying, we'll cover it all in a way that is easy to understand.


We start with the basics and quickly move into how to use Docker in development.

We'll cover:

  • Installing Docker
  • Getting familiar with the docker command
  • Running containers, seeing their intended uses and limitations
  • Building and managing images
  • New: Build images with BuildKit and Multi-stage builds
  • Efficient Dockerfiles
  • Using multiple containers
  • New: Orchestrating containers with docker-compose version 2 and 3
  • Development Workflows

Testing & CI

We use Docker to create a testing and CI process.

We'll cover:

  • Setting up and controlling Docker with docker-machine
  • Installing and configuring Jenkins
  • Automating code tests and image builds
  • Saving images to private Docker registries, backed by S3
  • Creating a CI workflow (automated testing) with Jenkins
  • New: Creating a CI/CD workflow with AWS CodeBuild


Docker in production is complex. We’ll see how the latest tooling makes it easier.

We'll cover:

  • Docker in production on single-hosts
  • Using Docker Registry notifications
  • What docker swarm is and how to use it
  • Advanced Docker networking
  • Building a multi-server production environment
  • Automating rolling deployments
  • New: A complete CI/CD pipeline using Amazon ECS with Blue/Green deployments

What people are saying:

Get started immediately! You'll receive course modules
Dockerizing Your Applications and get updates on any new announcements!

Want more? Learn more about containers!

Available Modules

1. Introduction

Course Introduction

Is this still relevant?

2. Docker Basics

Installing Docker for Mac/Windows

The Docker Commands

Your First Container

Inspecting Containers

Cleaning Up

Interacting With a Container (bash)

Nginx & Sharing Ports

Sharing Volumes


3. Docker Images & Everyday Use

Committing Changes

The Dockerfile

Building a PHP Image

Linking Nginx & PHP Containers

Pushing to Docker Hub

Linking the Full Stack

Docker Networking

Docker Volumes


4. Addendum 1

Official Images on Docker Hub

Advanced Dockerfiles: MySQL

5. Wrangling Containers with Docker Compose

Modern Docker Compose

Introducing Docker Compose

Docker Compose Basics

Serving a Real Application

Building Images with Docker Compose

Explaining the “docker-compose up” Command

Variables with Docker Compose

Extending Docker Compose Files

6. Docker Compose V3

Docker Compose Versioning

Extending Docker Compose 3

Compose and Env Vars

7. Addendum 2

Using mysqldump With Docker

Using SequelPro with Docker

8. Dockerizing Your Applications

Dockerizing Your Application Intro

Getting Started with an App

Creating our Project Images

Our Basic Docker Compose File

A Better Docker Compose File

"This Is Ridiculous, We Need Help"

The Workflow You Always Wanted

Extending Docker Compose for Dev and CI

Docker Compose Details for CI (and faster tests!)

Review Time!

Check Out Laravel Sail

9. Docker Machines (depreciated)

Introducing Docker Machine

Docker Machine with AWS

Docker Compose with Docker Machine

File Permissions with Docker

Installing Docker “Manually”

10. Addendum 3

Reviewing Docker Volumes, Permissions, and Network

11. CI with Jenkins

Installing Jenkins

Configuration Jenkins and Github

Automating Tests

Dealing with Secrets

Cleaning Up After Ourselves

12. CI with GitHub Actions

Don't Skip the Jenkins Module

What are GitHub Actions?

Preparing the App

Defining the GitHub Actions

Building the Docker Image

Using Service Containers

13. Preparing Continuous Delivery

Building Production Images

A Local Private Registry

An S3-Backed Private Registry

14. Single-Host Docker Production Setup

Server Setup and Running the App

Application State

Naive Deployment

Rolling Deployment

Automating Deployments

15. Docker Swarm

What is Docker Swarm

Server Cluster Setup

Registry with Swarm

Running Applications

Load Balancer as Entry Point

Rolling Updates

Docker Secrets

DNS and Service Discovery

16. Building with BuildKit

Building with BuildKit

Multistage Builds

Busting Build Cache

Target and Cache

17. Updated Docker Image (2020)


New App Image

New Node Image


Permissions and Gosu

Perms and Gosu Continued

Updating the Node Container

18. Production Images (2023)

How I Make Production Images

The Base Image

The Production Image

The Reusable Image

19. Amazon ECS

ECS Introduction

A New Application

Dockerizing Our Application

A Helper Script

Testing our Application

Private Registry with ECR

CodeBuild Setup

CodeBuild IAM

CodeBuild Success

Production Docker Image

Building with Build Cache

Using S3 for Secure Files

ECS, Tasks, and Clusters

Running Artisan Commands

ECS Services and Load Balancers

Rolling Deployments

Blue/Green Deployment Setup

Blue/Green Deployment Trigger

Automating Deployments in CodeBuild

CodeBuild IAM Updates

Application Logs to CloudWatch

The course is ready to buy!
Learn how to effectively use Docker in development, testing, and in production!

🐳   Buy Now $139.00


the true grumpy programmer, don't be fooled by imitation

I'm Chris Fidao. I wrote the Servers for Hackers eBook, and publish related videos at the Servers for Hackers video site. I also curate the Servers for Hackers newsletter, which is read by over 12,000 programmers who want to learn about servers.

I'm also the author of the Deploy PHP! video series, a video series about automating your deployments. A few years ago, I wrote Implementing Laravel, a book all about coding in Laravel - now offered free!


What is this?

Shipping Docker is a video series about Docker.

Is the course complete?

Shipping Docker is now officially released, although that doesn't mean I'm done adding new videos to it!

Is future content free?

Yes! Future added videos are free for those who have purchased Shipping Docker.

However, for any really huge topics (like if I added a start-to-finish Kubernetes course), I may decide to make that an "upgrade", at extra cost.

Is Shipping Docker free?

No, Shipping Docker is not free. However, I do have a ton of free Docker videos! You can find some premium ones by signing up above and by visiting the Container section of the site.

I signed up and got some free courses - Are these a large portion of the actual course?

Only the Dockerizing Your Application course is an actual module with Shipping Docker. All other courses and videos are free, extra lessons that expand on some specific aspects of Docker.

The full Shipping Docker course goes into more detail, including covering many "gotchas" / trouble areas that you are likely to hit.

What shell theme am I using in the videos?

I'm using the zsh shell, via oh-my-zsh. The theme is "agnoster". You'll need the Powerline font - details here.