Docker

Jour #1

DOF101 - La Virtualisation par Isolation - 2 heures.

Présentation de la Virtualisation par Isolation

Historique

Présentation des Namespaces

Présentation des CGroups

LAB #1 - Travailler avec les CGroups

1.1 - Limitation de la Mémoire

1.2 - Le Paquet cgroup-tools

La commande cgcreate

La Commande cgexec

La Commande cgdelete

Le Fichier /etc/cgconfig.conf

Présentation de Linux Containers

LAB #2 - Travailler avec LXC

2.1 - Installation

2.2 - Création d'un Conteneur Simple

2.3 - Démarrage d'un Conteneur Simple

2.4 - S'attacher à un Conteneur Simple

2.5 - Commandes LXC de Base

La Commande lxc-console

La Commande lxc-stop

La Commande lxc-execute

La Commande lxc-info

La Commande lxc-freeze

La Commande lxc-unfreeze

Autres commandes

2.6 - Création d'un Conteneur Non-Privilégié

User Namespaces

Création d'un Utilisateur Dédié

Création du Mappage

Création du Conteneur

Contrôle du Mappage

2.7 - Création d'un Conteneur Éphémère

La Commande lxc-copy

2.8 - Sauvegarde des Conteneurs

La Commande lxc-snapshot

DOF102 - Démarrer avec Docker - 2 heures.

Présentation de Docker

LAB #1 - Travailler avec Docker

1.1 - Installer docker

1.2 - Démarrer un Conteneur

1.3 - Consulter la Liste des Conteneurs et Images

1.4 - Rechercher une Image dans un Dépôt

1.5 - Supprimer un Conteneur d'une Image

1.6 - Créer une Image à partir d'un Conteneur Modifié

1.7 - Supprimer une Image

1.8 - Créer un Conteneur avec un Nom Spécifique

1.9 - Exécuter une Commande dans un Conteneur

1.10 - Injecter des Variables d'Environnement dans un Conteneur

1.11 - Modifier le Nom d'Hôte d'un Conteneur

1.12 - Mapper des Ports d'un Conteneur

1.13 - Démarrer un Conteneur en mode Détaché

1.14 - Accéder aux Services d'un Conteneur de l'Extérieur

1.15 - Arrêter et Démarrer un Conteneur

1.16 - Utiliser des Signaux avec un Conteneur

1.17 - Forcer la Suppression d'un Conteneur en cours d'Exécution

1.18 - Utilisation Simple d'un Volume

1.19 - Télécharger une image sans créer un conteneur

1.20 - S'attacher à un conteneur en cours d'exécution

1.21 - Installer un logiciel dans le conteneur

1.22 - Utilisation de la commande docker commit

1.23 - Se connecter au serveur du conteneur de l'extérieur

DOF103 - Gérer les Images Docker - 3 heures.

Contenu du Module

LAB #1 - Re-créer une image officielle docker

1.1 - Utilisation d'un Dockerfile

1.2 - FROM

1.3 - RUN

1.4 - ENV

1.5 - VOLUME

1.6 - COPY

1.7 - ENTRYPOINT

1.8 - EXPOSE

1.9 - CMD

1.10 - Autres Commandes

LAB #2 - Créer un Dockerfile

2.1 - Création et test du script

2.2 - Bonnes Pratiques liées au Cache

Jour #2

DOF104 - Gestion des Volumes, du Réseau et des Ressources - 2 heures.

LAB #1 - Gestion des Volumes

1.1 - Gestion Automatique par Docker

1.2 - Gestion Manuelle d'un Volume

LAB #2 - Gestion du Réseau

2.1 - L'Approche Réseau Docker

Bridge

Host

None

Liens

2.2 - Lancer Wordpress dans un container

2.3 - Gestion d'une Architecture de Microservices

LAB #3 - Superviser les Conteneurs

3.1 - Les Journaux

3.2 - Les Processus

3.3 - L'Activité en Continu

LAB #4 - Gestion des Ressources

4.1 - Limiter la Mémoire

DOF201 - Stocker les Images Docker - 2 heures.

LAB #1 - Installer un Registre Privé

1.1 - Installer docker

1.2 - Préparation

1.3 - Créer un Registre local,

1.4 - Créer un Serveur de Registre Dédié

Configurer le Registre Dédié

Configurer le Client

DOF202 - Docker Compose, Docker Machine et Docker Swarm - 3 heures.

LAB #1 - Docker Compose

1.1 - Installation

1.2 - Utiliser docker-compose

LAB #2 - Docker Machine

2.1 - Présentation

2.2 - Création de Machines Virtuelles Docker

2.3 - Lister les VM Docker

2.4 - Obtenir l'adresse IP des VM

2.5 - Se connecter à une VM Docker

LAB #3 - Docker Swarm

3.1 - Présentation

3.2 - Initialiser Docker Swarm

3.3 - Le Statut Leader

3.4 - Rejoindre le Swarm

3.5 - Consulter les Informations de Swarm

3.6 - Démarrer un Service

3.7 - Augmentation et Réduction du Service

3.8 - Consulter le Statut d'un Nœud

3.9 - Haute Disponibilité

3.10 - Supprimer un Service

3.11 - Sauvegarder Docker Swarm

3.12 - Restaurer Docker Swarm

Jour #3

DOF203 - Gestion du Réseau avec Docker - 3 heures.

L'Approche Réseau Docker

LAB #1 - Les Réseaux Docker ayant un Scope Local

1.1 - Bridge

Liens

1.2 - Host

1.3 - None

1.4 - Lancer Wordpress dans un container

1.5 - Gestion d'une Architecture de Microservices

LAB #2 - Gestion du Réseau overlay

2.1 - Création d'un Réseau overlay

2.2 - Création d'un Service

2.3 - Déplacer le Service vers un autre Réseau overlay

2.4 - DNS container discovery

2.5 - Création d'un Réseau overlay Personnalisé

LAB #3 - Gestion de l'Architecture des Microservices

3.1 - Mise en Place avec Docker Swarm avec des réseaux Overlay

DOF204 - Gestion de la Sécurité de Docker - 3 heures.

LAB #1 - Travailler avec les CGroups

1.1 - Présentation des Namespaces

1.2 - Présentation des CGroups

1.3 - Limitation de la Mémoire

1.4 - Le Paquet cgroup-tools

La commande cgcreate

La Commande cgexec

La Commande cgdelete

Le Fichier /etc/cgconfig.conf

LAB #2 - Utilisation des Docker Secrets

LAB #3 - Création d'un Utilisateur de Confiance pour Contrôler le Daemon Docker

LAB #4 - Le Script docker-bench-security.sh

LAB #5 - Sécurisation de la Configuration de l'Hôte Docker

5.1 - [WARN] 1.2.1 - Ensure a separate partition for containers has been created

5.2 - [WARN] 1.2.3 - Ensure auditing is configured for the Docker daemon

LAB #6 - Sécurisation de la Configuration du daemon Docker

6.1 - [WARN] 2.1 - Ensure network traffic is restricted between containers on the default bridge

6.2 - [WARN] 2.8 - Enable user namespace support

6.3 - [WARN] 2.11 - Ensure that authorization for Docker client commands is enabled

6.4 - [WARN] 2.12 - Ensure centralized and remote logging is configured

6.5 - [WARN] 2.14 - Ensure Userland Proxy is Disabled

6.6 - [WARN] 2.17 - Ensure containers are restricted from acquiring new privileges

6.7 - Le Fichier /etc/docker/daemon.json

LAB #7 - Sécurisation des Images et les Fichiers de Construction

7.1 - [WARN] 4.1 - Ensure a user for the container has been created

7.2 - [WARN] 4.5 - Ensure Content trust for Docker is Enabled

7.3 - [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images

LAB #8 - Sécurisation du Container Runtime

8.1 - [WARN] 5.1 - Ensure AppArmor Profile is Enabled

8.2 - [WARN] 5.2 - Ensure SELinux security options are set, if applicable

8.3 - [WARN] 5.10 - Ensure memory usage for container is limited

8.4 - [WARN] 5.11 - Ensure CPU priority is set appropriately on the container

8.5 - [WARN] 5.12 - Ensure the container's root filesystem is mounted as read only

8.6 - [WARN] 5.14 - Ensure 'on-failure' container restart policy is set to '5'

8.7 - [WARN] 5.25 - Ensure the container is restricted from acquiring additional privileges

8.8 - [WARN] 5.26 - Ensure container health is checked at runtime

8.9 - [WARN] 5.28 - Ensure PIDs cgroup limit is used

LAB #9 - Sécurisation des Images avec Docker Content Trust

9.1 - DOCKER_CONTENT_TRUST

9.2 - DCT et la commande docker pull

L'option disable-content-trust

9.3 - DCT et la commande docker push

9.4 - DCT et la commande docker build

Créer un deuxième Repositry

Supprimer une Signature

LAB #10 - Sécurisation du Socket du Daemon Docker

10.1 - Création du Certificat de l'Autorité de Certification

10.2 - Création du Certificat du Serveur Hôte du Daemon Docker

10.3 - Création du Certificat du Client

10.4 - Démarrage du Daemon Docker avec une Invocation Directe

10.5 - Configuration du Client

DOF205 - Validation de la Formation - 1 heure.

Rappel du Programme de la Formation

Jour #1

Jour #2

Jour #3

Évaluation de la Formation

Validation des acquis

Kubernetes

Jour #1

DOF301 - Création de Clusters Kubernetes - 4 heures.

Contenu du Module

L'Orchestration de Conteneurs

Présentation de Kubernetes (k8s)

Master

Nœuds (Minions)

LAB #1 - Création du Cluster Kubernetes avec des Machines Virtuelles

1.1 - Présentation

1.2 - Connexion à la Machine Virtuelle kubemaster

1.3 - Tester le Réseau

1.4 - Initialisation du Maître du Cluster

1.5 - Installation d'une Extension Réseau pour la Communication entre des PODs

1.6 - Connexion des Travailleurs au Maître

LAB #2 - Création du Cluster Kubernetes avec Minikube

2.1 - Présentation de Minikube

2.2 - Installation de Minikube

2.3 - Configuration de Minikube

2.4 - Installation de kubectl

2.5 - Mettre à jour Minikube

2.6 - La Commande minikube dashboard

2.7 - La Commande minikube addons

LAB #3 - Création du Cluster Kubernetes avec kind

3.1 - Présentation de kind

3.2 - Configurer Docker-CE dans la VM Debian_9

3.3 - Installation de kubelet, kubeadm et kubectl

3.4 - Installation de kind et Démarrage du Cluster

DOF302 - Utilisation de la Commande kubectl - 3 heures.

LAB #1 - Travailler avec kubectl

1.1 - Équivalences entre la commande docker et la commande kubectl

1.2 - Obtenir de l'Aide sur les Commandes de kubectl

1.3 - Obtenir de l'Information sur le Cluster

La Commande version

La Commande cluster-info

La Commande api-versions

La Commande api-resources

1.4 - Travailler avec les Nœuds

La Commande describe

La Commande top

Les Commandes cordon et uncordon

La Commande drain

La Commande delete

1.5 - Gestion des Applications

La Commande expose

La Commande get

La Commande set

La Commande rollout

1.6 - Déboguer une Application

La Commande logs

La Commande exec

1.7 - Gérer les Plugins de kubectl

La Commande krew

1.8 - Gérer des patchs

La Commande kustomize

1.9 - Alias utile

L'Alias kg

L'Alias kd

L'Alias kga

L'Alias kp

L'Alias kap

L'Alias kei

L'Alias ke

L'Alias kpf

L'Alias kl

Jour #2

DOF303 - PODs, Contrôleurs de Réplication, ReplicaSets et Deployments - 4 heures.

LAB #1 - Création d'un POD

1.1 - Présentation d'un POD

1.2 - Création Manuelle d'un POD

1.3 - Création d'un POD à l'aide d'un fichier YAML

apiVersion

kind

metadata

spec

Utilisation du Fichier YAML

LAB #2 - Utilisation de Contrôleurs de Réplication et ReplicaSets

2.1 - Contrôleurs de Réplication

Présentation d'un Contrôleur de Réplication

Mise en Application

2.2 - ReplicaSets

Présentation d'un ReplicaSet

Mise en Application

LAB #3 - Gestion des Deployments

3.1 - Présentation d'un Deployment

3.2 - Mise en Application

Rollouts

Rolling Updates

Rollbacks

DOF304 - Gestion du Réseau, des Services et d'une Architecture de Microservices - 3 heures.

LAB #1 - Gestion du Réseau et des Services

1.1 - Présentation

1.2 - Le Service NodePort

1.3 - Le Service ClusterIP

LAB #2 - Gestion de l'Architecture des Microservices

2.1 - Présentation

2.2 - Création des Deployments

2.3 - Création des Services

2.4 - Déployer l'Application

2.5 - Tester l'Application

2.6 - Scaling Up

Jour #3

DOF305 - Sécurisation de Kubernetes - 3 heures.

LAB #1 - Role Based Acces Control et Certificats TLS

1.1 - Présentation

1.2 - Le Fichier /etc/kubernetes/manifests/kube-apiserver.yaml

1.3 - Création d'un serviceAccount

1.4 - Création d'un Utilisateur

1.5 - Certificats TLS

LAB #2 - Implémentation de la Sécurité au niveau des Pods

2.1 - Présentation

2.2 - Kubernetes Security Context

ReadOnlyRootFilesystem

drop

2.3 - Kubernetes Pod Security Policy

2.4 - Kubernetes Network Policies

2.5 - Kubernetes Resource Allocation Management

LAB #3 - Sécuriser les Composants de Kubernetes

3.1 - L'accès à l'API Kubelet

3.2 - L'accès de Kubelet à l'API Kubernetes

3.3 - Sécuriser etcd

DOF306 - Le Gestionnaire de Charts Helm - 3 heures.

LAB #1 - Travailler avec Helm

1.1 - Présentation de Helm

1.2 - Installation de Helm

1.3 - La Commande helm search hub

1.4 - Rechercher dans le Helm Hub

1.5 - Ajouter et supprimer un Dépôt

1.6 - La Commande helm search repo

1.7 - La Commande helm show

1.8 - Installation d'un Chart

1.9 - La Commande helm get

1.10 - Utilisation des NOTES

1.11 - La Commande helm upgrade

1.12 - La Commande helm history

1.13 - La Commande helm rollback

1.14 - La Commande helm uninstall

LAB #2 - Supervision de Kubernetes avec le Stack EFK

2.1 - Présentation dus Stack EFK

2.2 - Installation du Chart elasticsearch

2.3 - Installation du Chart fluentd-elasticsearch

2.4 - Installation du Chart kibana

2.5 - Génération de Traces dans Kubernetes

2.6 - Visualisation des Données avec Kibana

DOF307 - Validation de la Formation - 1 heure.

Rappel du Programme de la Formation

Jour #1

Jour #2

Jour #3

Évaluation de la Formation et la Validation des Acquis

Validation des Acquis