Docker for Developers

© Elephant Scale
2022 January

Overview

Containerization is one of the most important developments in application deployment in many years, and paves the way for many other exciting possibilities in dev/ops.

Docker is the industry-standard container format and Docker tools are the cross-platform standard for creating containers.

This course teaches containerization, docker and docker development to participants.

What you will learn

  • Containerization technologies
  • Docker and its ecosystem
  • Using Docker images
  • Building custom docker images
  • Packaging applications into containers
  • Publishing images to registry
  • Docker networking
  • Orchestration with docker compose
  • Troubleshooting tips

Audience

Developers, Architects, DevOps

Duration

3 days

Format

Lectures and hands-on labs. (50%, 50%)

Prerequisites

  • Must-have: comfortable with Linux environment.
  • Previous development experience in popular languages (Java, Python, Javascript) is recommended.

Lab environment

A cloud based lab environment will be provided.

Students will need the following

  • A reasonably modern laptop with unrestricted connection to the Internet. Laptops with overly restrictive VPNs or firewalls may not work properly
  • Chrome browser
  • SSH client for your platform

Detailed Outline

Containerization Introduction

  • Monolithic apps vs. microservices
  • Deploy issues faced by developers
  • Virtual machines vs containers
  • Containerization technologies

Docker Intro

  • Docker architecture
  • Docker internals
  • Running docker
  • Docker concepts: images, containers, registries
  • Introduction to Dockerhub
  • Labs

Working with Docker Containers

  • Downloading Docker images
  • Running docker containers
  • Managing container life cycle
  • Labs

Building Custom Docker Images

  • Bundling our applications in a container
  • Introducing the Dockerfile
  • Building an image from a Dockerfile
  • Understanding layers and commands
  • Labs

Working with the Registry

  • Introduction to container registries
  • Introduction to DockerHub
  • Creating a repository on DockerHub,
  • Publishing custom images to registry
  • Dev setup with a private container registry
  • Wrap-up
  • Labs

Networking

  • Understanding Docker networking
  • Various networking options for Docker
  • Bridge vs Host networking
  • Exposing ports

Storage

  • Persistent storage in Docker
  • Using binds and volumes
  • Defining and using storage volumes
  • Storage backup and restore
  • Labs

Docker Compose

  • Orchestrating containers
  • Docker compose concepts
  • First application with docker compose
  • Developing complex applications using docker compose
  • Labs

Troubleshooting and Debugging

  • Inspecting docker logs
  • Docker daemon logging
  • Container logging
  • Troubleshooting and optimizing builds
  • Cleanup and maintenance

Next Steps

  • Discuss projects, use cases and next steps