Skip to main content

Docker for Programmers: Build Faster, Deploy Smarter

Executive Summary

This 2-day course teaches programmers how to use Docker to build, run, and manage containers. Learn to set up Docker environments, manage images and containers, write Dockerfiles, and use Docker Compose and Docker Stack. Integrate Docker into CI/CD pipelines and explore alternatives like Podman and Kubernetes. Ideal for programmers streamlining development and deployment with containerized workflows.

Programming Professionals Collaborating

Description

Unlock the full potential of containerization with this comprehensive Docker course designed specifically for software development professionals. Whether you're new to containers or looking to deepen your skills, this hands-on training begins with the fundamentals of Docker, containerization, and orchestration. You'll set up a Docker environment, explore how containers work, and learn to build and manage Docker images and containers using Dockerfiles. The course dives into essential topics like Docker networking, Docker Compose, and Docker Stack, and shows how to integrate Docker into CI/CD pipelines for streamlined DevOps workflows. You'll also explore Docker alternatives and leave with actionable insights to apply container technology confidently in real-world programming projects. This Docker training is ideal for developers, DevOps engineers, and IT professionals seeking to modernize application development with containerization.

Objectives

  • Understand the fundamental concepts of Docker, containerization, and orchestration
  • Set up and navigate Docker Desktop, Docker Hub, and Visual Studio Code
  • Learn the underlying tech behind containerization and the Open Container Initiative
  • Manage Docker images and containers: list, remove, search, and pull images
  • Create and optimize Dockerfiles using layers and best practices
  • Run containers in various modes with port and volume mappings
  • Understand Docker networking types and connect containers effectively
  • Orchestrate apps using Docker Compose and Docker Stack in CI/CD pipelines

Duration

14 hours of intensive training with live instruction delivered over two or four days to accommodate varied scheduling needs. 

Request Information

Course Outline

Overview of Docker & Containerization
  • What is Docker?
  • What is Containerization?
  • What is Orchestration?
  • What is a Container Registry?
  • Docker for Production
  • Docker for Development
  • Docker and DevContainers
Development Environment
  • Docker Desktop
  • Docker Hub
  • Visual Studio Code and useful Extensions
  • Visual Studio DevContainers
  • GitHub Codespaces and DevContainers
Containerization
  • What is an Image and a Container?
  • Standard Unit of Software
  • Application Isolation
  • Underlying Technology
    • Namespaces
    • Control Groups
    • Union File Systems
  • Open Container Initiative
    • Image Format
    • Runtime Specification
Docker Image and Container
  • Managing Images
  • Listing and Removing Images
  • Searching for Images
  • Image Tags and Versions
  • Pulling Images
  • Image Caching
  • Run Hello World Container
Create Image with Dockerfile
  • Dockerfile
  • Build Image
  • Tag Image
  • Publish Image
  • Run Hello World Nginx Container
Dockerfile
  • Layers
  • Organize Layers
  • Base Image
  • Work Directory
  • Copy Files
  • Run Commands
  • Environment Variables
  • Ports
  • Container Executable
  • Multi-Stage builds with Dockerfile
  • Best Practices
Run Container
  • Run a Container in Detached Mode
  • Run a Container with Interactive Mode
  • Port Mapping
  • Volume Mapping
  • Run a Database Container
  • Run a Database Client Container in Interactive Mode
Docker Volumes
  • Data Persistence
  • Bind Mounts
  • Named Volumes
  • Volume Drivers
  • Volume Plugins
  • Configure a Persistent Volume for a Database Container
Docker Networking
  • Container Networking
  • Bridge Network
  • Host Network
  • Overlay Network
  • Macvlan Network
  • None Network
  • Network Drivers
  • Access a Database Container from a Client Container
  • Connecting a Web App Container to a Database Container
Docker Compose
  • What is Docker Compose?
  • YAML File Format
  • Compose File
  • Services
  • Network and Volume Configuration
  • Environment Variables
  • Compose Build
  • Compose Up and Down
  • Compose Daemon Flag
  • Orchestrate a Web App with Database using Docker Compose
Docker Stack
  • What is Docker Stack?
  • Docker Swarm
  • Docker Stack File
  • Deploy a Stack
  • List Tasks and Services in a Stack
  • List Stacks
  • Remove a Stack
  • Orchestrate a Web App with Database using Docker Stack
Docker and CI/CD
  • Continuous Integration, Delivery & Deployment
  • Docker in CI/CD Pipeline (choose one or two)
    • GitHub Actions
    • GitLab CI/CD
    • Azure DevOps
    • Jenkins
  • Build Images and Push to a Registry
  • Run a Container in a Pipeline
Alternatives to Docker Overview
  • Podman
  • Buildah
  • Skopeo
  • CRI-O
  • Containerd
  • rkt
  • Kubernetes
Conclusion
  • Summary of Key Concepts
  • Q&A
  • Further Resources and Next Steps

Prerequisites

  • Basic programming and Linux command-line experience.
  • Prior experience with Docker and/or Containerization is not required.
 

Training Materials

All students receive comprehensive courseware covering all topics in the course. Courseware is distributed via GitHub in the form of documentation and extensive code samples. Students practice the topics covered through challenging hands-on lab exercises. Students will need a free, personal GitHub account to access the courseware. Student will need permission to install Docker Desktop, Visual Studio Code, and Visual Studio Code Extensions on their computers.