Course outline for Docker and Microservices
About 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