WA3003

Docker and Kubernetes Fundamentals Training

This intensive Docker and Kubernetes training course teaches attendees theoretical concepts and real-world skills solidified with hands-on labs, allowing students to apply their knowledge. This course covers Kubernetes and Docker fundamentals and briefly introduces Continuous Integration.

Course Details

Duration

3 days

Prerequisites

  • Proficiency with the Linux Command Line Interface (CLI)
  • Broad understanding of Linux system administration: Linux file system, networking, and bash scripting.
  • Computer programming concepts and methodologies. Full code examples for the course are provided in the Python and Java programming languages.

Target Audience

  • Developers
  • System Architects
  • Technical Team Leads
  • Systems Administrators
  • DevOps Professionals

Skills Gained

  • The fundamental uses of container technology and the architectural principles of how to apply containers to technical challenges.
  • Create containers with both packaged solutions and custom software.
  • Use the Docker and Kubernetes CLI environments to deploy solutions in local (Docker) and cluster (Kubernetes) environments.
  • How stateful services – such as databases, streaming solutions , and other specialty applications  – can be deployed in highly-available configurations with redundancy and service-discovery/load-balancing.
  • How other components – can be used to integrate services within the Kubernetes platform.
  • How Docker and technologies such as Jenkins can be used to continuously test and build containers based on changes to source code.
Course Outline
  • Docker and Linux Container Technology: Introduction and Use-Cases
    • Modern Infrastructure Terminology
    • Virtualization
    • Hypervisors
    • Hypervisor Types
    • Type 1 Hypervisors
    • Type 2 Hypervisors
    • Type 1 vs. Type 2 Processing
    • Paravirtualization
    • Virtualization Qualities
    • Disadvantages of Virtualization
    • Containerization
    • Virtualization vs. Containerization
    • Where to Use Virtualization and Containerization
    • Containerization: High-Level
    • Popular Containerization Systems
    • What are Linux Containers
    • Docker
    • OpenVZ
    • Solaris Zones (Containers)
    • Container Orchestration Tools
    • Docker Swarm
    • Kubernetes
    • Mesos and Marathon
    • Docker Use-Cases
    • Microservices
    • Microservices and Containers / Clusters
  • 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
  • Managing Docker State
    • State and Data in Docker
    • Volumes
    • More About Volumes
    • Uses for Volumes
    • Working With Volumes
    • Create Volume
    • Use Volumes with Containers
    • Bind Mounts
    • Using Bind Mounts
    • tmpfs Mounts
    • Storing Data in the Container
    • Storage Drivers
    • Remote Data Storage
    • Networking
    • The Default Bridge Network
    • User-Defined Bridge Networks
    • Docker Network Commands
    • Creating a User-Defined Bridge Network
  • Open Container Initiative and Container Runtime Interface
    • Open Container Initiative (OCI)
    • Docker
    • Docker Engine Architecture
    • runC
    • containerd
    • containerd Benefits
    • CRI-O
    • CRI-O Components
    • Kubernetes and CRI-O
    • Using Container Runtimes with Minikube
    • Docker Runtime and Kubernetes
    • Putting Things Together
  • Kubernetes Architecture
    • Kubernetes Basics
    • What is Kubernetes?
    • Container Orchestration
    • Architecture Diagram
    • Components
    • Kubernetes Cluster
    • Master Node
    • Kube-Control-Manager
    • Nodes
    • Pod
    • Using Pods to Group Containers
    • Label
    • Label Syntax
    • Label Selector
    • Annotation
    • Persistent Storage
    • Resource Quota
    • Interacting with Kubernetes
  • 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
  • Kubernetes Workload
    • Kubernetes Workload
    • Managing Workloads
    • Imperative commands
    • Imperative Object Configuration
    • Declarative Object Configuration
    • Configuration File Schema
    • 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
    • Skip Kubernetes Scheduler
    • Scheduling Process
    • Scheduling Process - Predicates and Priorities
    • Scheduling Algorithm
    • Kubernetes Scheduling Algorithm
    • Scheduling Conflicts
    • Controlling Scheduling
    • Label Selectors
    • Node Affinity and Anti-affinity
    • Taints and Tolerations
  • 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
  • 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
  • Working with Helm
    • What is Helm?
    • Installing Helm
    • Helm and KUBECONFIG
    • Helm Features
    • Helm Terminology
    • Searching for Charts with helm CLI
    • Adding Repositories
    • Helm Hub - Search
    • Helm Hub - Chart Page
    • Installing a Chart
    • Upgrading a Release
    • Rolling Back a Release
    • Creating Custom Charts
    • Common Chart Files
    • Helm Templates
    • Installing A Custom Chart
    • Packaging Custom Charts
  • 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
  • Continuous Integration Fundamentals
    • Jenkins Continuous Integration
    • Jenkins Features
    • Running Jenkins
    • Downloading and Installing Jenkins
    • Running Jenkins as a Stand-Alone Application
    • Running Jenkins on an Application Server
    • Installing Jenkins as a Windows Service
    • Different types of Jenkins job
    • Configuring Source Code Management(SCM)
    • Working with Subversion
    • Working with Git
    • Build Triggers
    • Schedule Build Jobs
    • Polling the SCM
    • Maven Build Steps
    • Configuring Jenkins to Access Kubernetes
    • Jenkins Pipeline
    • Jenkins Pipeline Output
    • Installing Jenkins Plugins
  • Lab Exercises
    • Lab 1. Creating a Docker Account and Obtaining an Access Token
    • Lab 2. Managing Containers
    • Lab 3. Building Images
    • Lab 4. Dockerfiles
    • Lab 5. Getting Started with Docker Compose
    • Lab 6. Docker Volumes
    • Lab 7. Custom Network Management
    • Lab 8. Configuring Minikube/Kubernetes to Use a Custom Docker Account
    • Lab 9. Accessing the Kubernetes API
    • Lab 10. Working with Kubernetes Workloads
    • Lab 11. Scheduling and Node Management
    • Lab 12. Accessing Applications
    • Lab 13. Using Persistent Storage
    • Lab 14. Getting Started with Helm
    • Lab 15. Build CI Pipeline with Jenkins
Upcoming Course Dates
USD $2,090
Online Virtual Class
Scheduled
Date: May 13 - 15, 2024
Time: 10 AM - 6 PM ET
USD $2,090
Online Virtual Class
Scheduled
Date: Jul 1 - 3, 2024
Time: 10 AM - 6 PM ET
USD $2,090
Online Virtual Class
Scheduled
Date: Aug 19 - 21, 2024
Time: 10 AM - 6 PM ET
USD $2,090
Online Virtual Class
Scheduled
Date: Oct 7 - 9, 2024
Time: 10 AM - 6 PM ET