Docker and Kubernetes: Building and scaling a containerized application Certificate for Aitor Martin
[Day 01]
Introduction
- Containers vs virtual machines
- Speed and performance
Overview of Docker architecture
- Docker and the Linux kernel
- Docker components (Docker client, Docker daemon, images, registry, containers)
Using Docker to run and manage containers
- Images, containers, volumes, networks
Overview of container orchestration
Installing Docker
Pulling an image from the internet
- Sample: Apache Tomcat
Running the container
Docker registries
- Public vs private
Creating and managing Dockerfiles
Building a Docker image
Deploying a web application
- Sample application: Java EE application server
How Docker containers communicate with each other
Configuring volumes and networks in Docker
- Linking and state
[Day 02]
Introduction to container orchestration with Kubernetes
Overview of Kubernetes architecture
- Pods, labels/selectors, replication controllers, services, API
Installing a Kubernetes cluster
Creating Kubernetes pods, volumes and deployments
Grouping and organizing your cluster
Discovering and publishing services
Discovering and connecting to containers
Deploying a web application
- Handling application components
- Handling Database connections
Kubernetes security
- Authentication & authorization
Advanced networking
- Docker networking vs Kubernetes networking
Monitoring Kubernetes
- Cluster logging with Elasticsearch and fluentd
- Container level monitoring (cAdvisor UI, Influxdb, Prometheus)
[Day 03]
Scaling your Kubernetes cluster
Infrastructure for Kubernetes
- Provisioning, partitioning, networking
Building a high-availability cluster
- Load balancing and service discovery
Deploying a scalable application
- Horizontal pod autoscaling
- Database clustering in Kubernetes
Updating your application
- Releases in Kubernetes
Troubleshooting
Closing remarks