Docker Networks and Multiple Containers
Course Content
0 / 180 completedIntroduction
Installing Docker and Kubernetes on Mac
Installing Docker and Kubernetes on Windows Professional and Enterprise editions
What is Docker
Installing Docker and Kubernetes on Linux
Running a Docker Container
Exposing Ports for External Access
Environment Variables
Looking inside a Docker Container
Docker Container Logs
Docker Volumes
Stopping a Docker Container
Listing Stopped Docker Containers
Removing a Stopped Docker Container
Listing Running Docker Containers
Docker Networks and Multiple Containers
Docker Image Repositories
Docker Images
Application Architecture Overview
Clone Source Code Project
Create your own GitHub Project for the Source Code
Walkthrough of Source Code
Introduction and Development Framework installations
Create a Docker Network
Start a PostgreSQL Database Container
Start a Redis Cache Container
Start an Elasticsearch Search Container
Start the App Client (Angular) and Test the App
Start the App Backend (API)
Change App Backend (API) to use Docker Network
Building an App Backend (API) Docker Image
Creating a Dev Dockerfile for the App Client (Angular)
Creating a Dev Dockerfile for the App Backend (API)
Building an App Client (Angular) Docker Image
Change App Client (Angular) to use Proxy
Building a Proxy (Nginx) Docker Image
Creating a Dev Dockerfile for the Proxy (Nginx) including Custom Configuration
Commit and push changes to GitHub
Start the App Client (Angular) Container
Start the App Backend (API) Container
Start the Proxy (Nginx) Container
Test it out (also changing code)
Stop everything and clean up
Writing a Docker Compose file for App Solution
Start the App Solution and Test
Creating a Dev Dockerfile for Postgres that Creates Todo db
Update App Backend (API) Source Code
Create App Backend (API) Start Script that Checks Elasticsearch Connection
Update Docker Compose file so it Builds Images and Sets Start Script for API
Stop Redis and See if it Works with just Database
Start the App Solution with Initial Build and Test
Save App Solution Project
Stateless vs Stateful Containers
A bit about Health checks
Add Named Volumes for Persistent Data
Desired App State and Actual App State
Accessing a Container and Executing a Command
Docker Compose seems Powerful, why do we need anything else, such as Kubernetes
Docker Compose file Walkthrough
Service to Service Intercommunication
Stopping the Todo Cache Ingestion, add new Todo, start Todo Cache Ingestion
Scaling the Todo Cache Ingestion
Start the App Solution with Initial Build and Test
Change to Development Tag in Docker Compose
Creating a Production Dockerfile for the App Backend Services (Node.JS)
Creating a Production Dockerfile for the App Client (Angular)
Pushing Images to Docker Hub
Docker Registries
Run App Solution with Production Images via Docker Compose
Create Production Docker Compose File
Save the Project
Push all built Production Images to Docker Hub
Setting up a Travis CI account and Associate with GitHUb project
Enable Travis CI (.travis.yml) in GitHub Project
Show Travis CI build status in GitHub project
Commit changes and Watch Travis CI Build
Create an AWS Account
Overview of AWS VPC and Security Groups
What does the cost billing look like for this development test deployment
Create AWS ElastiCache Instance - replaces todo-redis
Create AWS RDS Database Instance - replaces todo-postgres
Create an AWS Security Group for App
Download PgAdmin and set up Todo table
Create AWS Elasticsearch Instance - replaces todo-elastic
Documentation for Dockerrun.aws.json
Create App Environment in AWS Elastic Beanstalk
Create AWS PEM File and access Elastic Beanstalk EC2 instance
Create Elastic Beanstalk Deployment file (Dockerrun.aws.json)
Commit Changes and Watch Deployment
Configure Travis CI (.travis.yml) to Deploy to Elastic Beanstalk
Troubleshooting Deployments to Elastic Beanstalk
Clean up AWS Services
Configure Environment Properties in Elastic Beanstalk Console
Taking it for a test run
Hardware representation CPU and RAM
Hardware representation Storage
Pods and ReplicaSets - package your applications
Namespaces - partition your applications
Hardware representation Network
ConfigMap - configure your application
Ingress - consolidate access to services
Services - make your apps available externally
Deployments - controlling pods
Secret - configure passwords, tokens etc in a secure way
StatefulSets - running stateful containers
Persistent Volumes (PV) and Persistent Volume Claims (PVC)
Liveness and Readiness Probes - check the health of your application
Clone Todo App project with Kubernetes YAML
Create your own GitHub Project for the Source Code
Introducing Kompose
Update Account Name for Docker Images
Build and Publish Docker Images to Docker Hub
Troubleshooting Kubernetes Deployments
Running the Todo App Solution in Kubernetes
Walkthrough and Update Todo Kubernetes YAML
Updating PVCs to use default storage class
Run and see the PVs being dynamically provisioned
A word about what development environment to use
Installing Helm
Installing Kubernetes Dashboard with Helm
Install Todo App with Helm Chart
Create Helm Chart for Todo App
Creating a GitHub Repository to host Helm Charts
CI CD Pipeline overview
Deploy Todo App Chart from Remote Repository
Publish the Todo App Chart to the Repository
Move Todo Chart Source Code to helm-charts master branch
Publish Charts automatically with Travis CI
Provision EC2 Instance to install from
Install aws client, kubectl, and helm
Installing kops (used to create clusters)
Create kops IAM users
Configure AWS client (config and credentials in ~.aws)
Create S3 Bucket to hold Cluster configuration
Install Helm Server (Tiller)
Create a cluster with kops
Check default StorageClass
Define a cluster with kops
Create Service Account for Tiller with Role Cluster-Admin
Fix Elastic data permissions and Postgres data location
Deploy Todo App with Helm
Upgrade Todo App with Helm - change source code
Upgrade Todo App with Helm - change chart
YOU ARE BEING BILLED NOW - THIS AWS CLUSTER COSTS MONEY!
Auto Healing - What happens during a Worker Node failure
Delete cluster
Update .travis.yml to Tag with Build Number and deploy to AWS k8s cluster
Update Travis CI my-todo-cloud-k8s project with new Env Vars and Deploy
Create extra AWS Policies
Create eks IAM user
Configure AWS client (config and credentials in ~.aws)
Install eksctl and aws-iam-authenticator tools
Deploy Todo App with Helm
Create a cluster with eksctl
Delete cluster
Introduction to Google Cloud Console
Create a TodoApp Project and Enable Billing
Check default StorageClass
Create GKE cluster from UI and gcloud CLI
Install and Configure gcloud CLI
Connect to cluster with gcloud CLI and kubectl
Install Docker on EC2 instance (Rancher will be installed via Docker)
Provision EC2 instance to run Rancher Server on
Install Rancher and Access UI
What is Rancher
Rancher UI Walkthrough
Configure Authentication with GitHub
Import Google GKE Cluster
Create Google GKE Cluster from Google Cloud Console
Inspect the imported Google GKE Cluster
Create Amazon EKS Cluster
Create Google GKE Cluster
Install Helm Server (Tiller)
Remove Namespace Definitions from Todo App Chart
Add Catalog with Todo App
Upgrade Rancher to version 2.3
Deploy Todo App to Single Cluster
Monitor the health of Clusters
Deploy Todo App to Multiple Clusters
Delete clusters