Course outline for Docker and Microservices

Pre-requisites for learning Docker and Microservices

  • Participants are expected to be familiar with basic Linux

Lab Setup

Hardware Configuration

Participants must have access to a system with the following hardware configuration:

  • 4GB of free RAM, 20GB of free disk space and full network connectivity

Software configuration

  • Ubuntu 20.04/22.04 Desktop Edition (sudo/root access required)
  • Chrome browser

Duration

  • 2-5 days

Training Mode

Online training for Docker and Microservices

We provide:

  • Instructor led live training
  • Self-paced learning with access to expert coaches
  • 24x7 access to cloud labs with end to end working examples

All jnaapti sessions are 100% hands-on. All our instructors are engineers by heart. Activities are derived from real-life problems faced by our expert faculty. Self-paced hands-on sessions are delivered via Virtual Coach.

Classroom training for Docker and Microservices

Classroom sessions are conducted in client locations in:

  • Bengaluru
  • Chennai
  • Hyderabad
  • Mumbai
  • Delhi/Gurgaon/NCR

Note: Classroom training is for corporate clients only

Detailed Course Outline for Docker and Microservices

Introduction

  • Installation
  • Hello World - Running a simple BASH shell

Docker Images

  • What is an image?
  • Finding images
  • Listing images
  • Pulling images
  • Removing images

Docker Containers

  • Introduction to containers
  • Difference from images
  • Running a container
  • Listing the running containers
  • Listing all containers
  • Stopping/Starting containers
  • Removing containers
  • Creating your own images
  • Understanding container state
  • Copying to and from containers
  • Running processes in existing containers
  • Restricting access to process, memory, disk and network
  • Getting runtime statistics

Dockerfiles

  • Building images from Dockerfiles
  • Understanding the Dockerfile format
  • Understanding union/overlay filesystems
  • Best practices in building Dockerfiles
  • A few case studies
  • Dockerizing a Spring Boot application
  • Multi-stage Docker builds
  • Building images from "scratch"

Docker Daemon

  • Binding the daemon to a different host/port
  • Interacting remotely with the daemon

Networking

  • The docker0 interface
  • Understanding bridge, overlay, host and null networks
  • Creating custom networks
  • Communication between containers via container names
  • Binding container ports to the host
  • Communicating across nodes
  • Service discovery and problems with Docker networks

Managing data in Containers

  • Working with data in containers
  • Docker volumes
  • Mounting files and directories
  • Backup, Restore and Migrate volumes
  • Case study - Mounting the MySQL data directory
  • Challenges of migrating volumes across nodes

Other Docker Projects

  • Docker Compose
  • Docker Swarm
  • Docker Machine
  • Comparison to Kubernetes
  • Comparison to Amazon Elastic Container Service and Fargate

Understanding the evolution of containers

  • cgroups and namespaces
  • chrooting
  • LXC
  • The problem that Docker solved
  • Standardization efforts around container runtimes
  • Security issues with containers
  • Birth of alternative container runtimes
  • Firecracker, Kata Containers, gVisor, Unikernels and the like

Microservices Architecture in Depth

  • Comparing Microservices to Monolithic architectures
  • Pros and cons of microservices architecture
  • Complexities of microservice architectures
  • 12 factor application development
  • Common pitfalls when migrating from Monolith to Microservices

Operational Readiness

  • Handling scale with microservices architecture
  • Handling failures and performing failovers in microservices architecture
  • Logging, tracing and monitoring in microservices architecture
  • Testing for operational readiness

Microservices architectural patterns (concepts)

  • Challenges of building and maintaining microservices applications
  • Service discovery
  • Circuit breaker
  • Routing and proxies
  • Load balancing – internal and external
  • Ingress controllers
  • API gateway