WA3367

Introduction to Docker and Kubernetes Training

This Docker and Kubernetes course teaches attendees the building blocks of Docker and Kubernetes, two of the most important technologies for building and deploying containerized applications.

Course Details

Duration

2 days

Prerequisites

  • Some familiarity with Linux
  • Basic programming skills

Target Audience

  • Developers
  • System Administrators

Skills Gained

  • Understand Docker basics, including architecture and integration
  • Work with virtualization and containerization
  • Dive deep into Kubernetes' architecture, clusters, and pods
  • Master storage, security, and routing
  • Deploy and manage workloads
  • Understand Kubernetes' orchestration and use labels and affinities
  • Debug deployments
Course Outline
  • Docker in Action
    • Docker Basics
    • Where Can I Run Docker?
    • Installing Docker Container Engine
    • Docker Toolbox
    • What is Docker?
    • Docker Architecture
    • Docker Architecture Diagram
    • Docker Images
    • Docker Containers
    • Docker Integration
    • Docker Services
    • Docker Application Container Public Repository
    • Docker Run Command
    • Starting, Inspecting, and Stopping Docker Containers
    • Docker Volume
    • Dockerfile
    • Docker Compose
    • Using Docker Compose
    • Dissecting docker-compose.yml
    • Specifying services
    • Dependencies between containers
    • Injecting Environment Variables
  • What is Kubernetes
    • Modern Infrastructure Terminology
    • Virtualization
    • Disadvantages of Virtualization
    • Containerization
    • Virtualization vs Containerization
    • Where to Use Virtualization and Containerization
    • Popular Containerization Systems
    • What are Linux Containers?
    • Container Orchestration Tools
    • Docker Swarm
    • Kubernetes
    • Microservices
    • Microservices and Containers / Clusters
  • Kubernetes – From the Firehose
    • Kubernetes Basics
    • What is Kubernetes?
    • Container Orchestration
    • Kubernetes Architecture
    • Kubernetes Concepts
    • Cluster and Namespace
    • Nodes
    • Master
    • Pod
    • Using Pods to Group Containers
    • Label
    • Label Syntax
    • Annotation
    • Label Selector
    • Replication Controller and Replica Set
    • Service
    • Storage Volume
    • Secret
    • Resource Quota
    • Authentication and Authorization
    • Routing Concepts
    • Docker Registry
  • Kubernetes Workload
    • Kubernetes Workload
    • Managing Workloads
    • Imperative commands
    • Imperative Object Configuration
    • Declarative Object Configuration
    • Configuration File Schema
    • Understanding API Version
    • Understanding API Version
    • Obtaining API Versions
    • Stateless Applications
    • Sample Deployment Manifest File
    • Working with Deployments
    • Stateful Applications
    • Sample Stateful Manifest File
    • Working with StatefulSet
    • Jobs
    • Sample Job Manifest File
    • Working with Batch Job
    • DaemonSets
    • Sample Daemon Manifest File
    • Rolling Updates
  • Scheduling and Node Management
    • Kubernetes Scheduler Overview
    • Trusting the Kubernetes Scheduler
    • Scheduling Process
    • Scheduling Process - Predicates
    • Scheduling Process - Priorities
    • Scheduling Algorithm
    • Kubernetes Scheduling Algorithm
    • Scheduling Conflicts
    • Controlling Scheduling
    • Label Selectors
    • Node Affinity and Anti-affinity
    • Node Affinity Example
    • Taints and Tolerations
  • Working with Kubernetes
    • Installation
    • Startup
    • Kubernetes Tools
    • kubectl Command Line Interface
    • API Proxy
    • Dashboard
    • Kubernetes Component Hierarchy
    • Deployments
    • Deployment Commands
    • Updating Deployments
    • Network Considerations
    • Services
    • Namespaces
    • Labels
    • Annotations
    • Other Useful Commands
  • Logging, Monitoring, and Troubleshooting
    • Differences Between Logging and Monitoring
    • Logging in Kubernetes
    • Basic Logging
    • Logging Agents
    • Fluentd and Elastic Stack
    • Monitoring with Prometheus
    • Kubernetes and Prometheus - Metrics
    • Alerting
    • Debugging Pods
    • Debugging Nodes
    • Debugging Replication Controllers and Services
    • Upgrading Kubernetes
    • Upgrade Process
    • Determine Which Version to Upgrade To
    • Upgrade kubeadm
    • Upgrade Control Plane Node
    • Upgrade kubelet and kubectl
    • Upgrade Worker Nodes
    • Recovering From a Failure State
  • Appendix 1 - Managing Persistent Storage
    • Storage Methods
    • Container OS file system storage
    • Docker Volumes
    • Kubernetes Volumes
    • K8S Volume Types
    • Cloud Resource Types
    • configMaps
    • Creating configMaps from Literals
    • Creating configMaps from files
    • Using configMaps
    • emptyDir
    • Using an emptyDir Volume
    • Other Volume Types
    • Persistent Volumes
    • Creating a Volume
    • Persistent Volume Claim
    • Persistent Volume
    • Pod that uses Persistent Volume
    • Secrets
    • Creating Secrets from Files
    • Creating Secrets from Literals
    • Using Secrets
    • Security Context
    • Security Context Usage
  • Appendix 2 - Managing Networking
    • Kubernetes Networking Components
    • The Kubernetes Network Model
    • Networking Scenarios
    • Container-Container Communication
    • Pod-Pod Communication
    • 1.3 Pod-Service Communication
    • External-Service Communication
    • Accessing Applications
    • Useful Commands
    • Container Network Interface (CNI)
    • What is CNI’s Role?
    • CNI Configuration Format
    • Sample CNI Configuration
    • Running the CNI Plugins
  • Lab Exercises
    • Lab 1. Creating a Docker Account and Obtain an Access Token
    • Lab 2. Managing Containers
    • Lab 3. Building Images
    • Lab 4. Dockerfiles
    • Lab 5. Docker Volumes
    • Lab 6. Configuring Minikube/Kubernetes to Use a Custom Docker Account
    • Lab 7. Accessing the Kubernetes API
    • Lab 8. Working with Kubernetes Workloads
    • Lab 9. Accessing Applications
    • Lab 10. Bonus Lab: Scheduling and Node Management
    • Lab 11. Bonus Lab: Using Persistent Storage