<<Download>> Download Microsoft Word Course Outline Icon Word Version Download PDF Course Outline Icon PDF Version

Docker for Programmers

Duration

2 days

Description

This comprehensive course provides a deep dive into Docker and containerization, designed for computer programming professionals. Starting with the basics of Docker, containerization, and orchestration, it guides you through setting up your Docker environment and understanding the underlying technology of containerization. You'll learn how to manage Docker images and containers, create Dockerfiles, and run containers in different modes. The course also covers Docker networking, Docker Compose, Docker Stack, and how Docker fits into CI/CD pipelines. Finally, it introduces alternatives to Docker and concludes with a summary of key concepts and further resources. This course is designed to equip you with the knowledge and skills to leverage Docker in your programming projects effectively.

Objectives

  • Understand the fundamental concepts of Docker, containerization, and orchestration.
  • Set up and navigate the Docker environment, including Docker Desktop, Docker Hub, and Visual Studio Code.
  • Learn about containerization, its underlying technology, and the Open Container Initiative.
  • Manage Docker images and containers, including listing, removing, searching, and pulling images.
  • Create and manage Dockerfiles, understanding layers, organizing layers, and implementing best practices.
  • Run containers in different modes, understand port mapping, volume mapping, and run database containers.
  • Understand Docker networking and its various types, and learn how to connect containers.
  • Explore Docker Compose, Docker Stack, and their role in orchestrating applications, and understand how Docker fits into CI/CD pipelines.

Prerequisites

Basic programming and Linux command-line experience. Prior experience with Docker 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.

Software Requirements

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.

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 am 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 Service 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 Images 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
<<Download>> Download Microsoft Word Course Outline Icon Word Version Download PDF Course Outline Icon PDF Version