Containers are one of the most powerful tools that have emerged for developing and managing software. When combined with DevOps and Cloud Native practices, it is possible for organizations to efficiently delivery applications and services at high velocity. This training course introduces containers and two of the most popular tools for their management and orchestration: Docker and Kubernetes.
Students will gain a foundation of the Docker and Kubernetes technologies. They will be introduced to the core components of both Docker and Kubernetes as they apply to both development and production/staging environments. Topics covered include: containers, tools for local management, pods, labels, volumes, networking, replication controllers, services, and stateful sets. Students will get hands-on experience with how the technologies can be used to deliver software according to DevOps practices.
At the end of the course, participants and teams will understand how to build secure, robust, highly available services that are resilient and able to adapt to rigorous application demands.
Key Learning Areas
- Learn 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.
- Learn how stateful services – such as databases, streaming solutions such as Kafka, and other specialty applications such as ElasticSearch – can be deployed in highly-available configurations with redundancy and service-discovery/load-balancing.
- Show how other components – such as Kafka Connect – can be used to integrate services within the Kubernetes platform.
- Explore how Docker and technologies such as Jenkins can be used to continuously test and build containers based on changes to source code.
Docker and Linux Container Technology: Introduction and Use-Cases
- Clusters, containers, and clouds: understanding modern infrastructure
- Container lifecycles and challenges
- Local versus production: bridging development environments
Docker in Action
- Docker runtime and architecture
- Managing containers
- Creating toolboxes: Docker images
- Lab: Managing Containers
- Lab: Building Images
- Lab: Dockerfiles
Managing Docker State
- Lab: Deploying stateful services within the Docker runtime
- Lab: Custom network management
- Lab: Volumes and drivers
Kubernetes Core Concepts: Pods, Labels, Controllers, Services, Secrets, Persistent Data Volumes, Claims, Namespaces, Quotas
- Container orchestration requirements and options
Orchestration Landscape: Kubernetes and Mesos
Working with Kubernetes
- Pods, deployments, and services
- Lab: Installing Kubernetes
- Lab: Accessing the Kubernetes API
- Lab: Kubernetes Workloads
- Lab: Scheduling and Node Management
- Lab: Accessing Applications
Managing Persistent Storage
- Lab: Using persistent storage
Infrastructure as Code
- Describing and deploying applications using Helm
- Lab: Install Helm
- Lab: Create Helm Charts
- Lab: Deploying Integrated Applications
Continuous Integration Fundamentals
- Describe how
- Linking services using Docker Compose
- Lab: Building Continuous Integration and Build
- Pipelines with Jenkins
Developers, system architects, technical team leads, systems administrators, and DevOps professionals who want to understand and use Kubernetes in cloud environments.
- 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.