DevOps Docker
DevOps Docker
Après une présentation des concepts, nous découvrons les commandes permettant
de gérer des applications isolées dans leurs contextes.
Bonne lecture…
I. INDEX ........................................................................................................................................... 2
II. PREAMBULE ................................................................................................................................... 6
A. CE DOCUMENT ......................................................................................................................... 6
B. CONVENTIONS ......................................................................................................................... 6
C. OBJECTIFS PEDAGOGIQUES ...................................................................................................... 7
III. INTRODUCTION .......................................................................................................................... 8
A. CONTEXTE AGILE .................................................................................................................... 8
B. DEVOPS ................................................................................................................................... 8
C. LA SECURITE AVEC DEVSECOPS ........................................................................................... 10
D. CATTLE NOT PETS .................................................................................................................. 11
IV. LA VIRTUALISATION ................................................................................................................ 12
A. HYPERVISEUR DE TYPE 1 (PARAVIRTUALISATION) ............................................................... 12
B. HYPERVISEUR DE TYPE 2 (EMULATEURS).............................................................................. 13
C. VIRTUALISATION SYSTEMES ................................................................................................. 13
D. VIRTUALISATION APPLICATIVE ............................................................................................. 14
E. VIRTUALISATION VIRTUELLE ................................................................................................ 14
F. LINUX CONTAINERS .................................................................................................................. 15
G. PRESENTATION DE DOCKER .................................................................................................. 16
H. EXEMPLE D’IMPLEMENTATION .............................................................................................. 16
V. INSTALLATION ............................................................................................................................. 18
A. PROCEDURE ........................................................................................................................... 18
1. Installation manuelle ......................................................................................................... 18
2. Installation via un script .................................................................................................... 18
B. POST-INSTALLATION ............................................................................................................. 18
VI. PREMIERS PAS .......................................................................................................................... 21
A. APERÇU DES COMMANDES .................................................................................................... 21
B. INSTALLATION D’UN CONTENEUR ......................................................................................... 21
1. Récupération d’une image ................................................................................................. 21
2. Création d’un conteneur .................................................................................................... 21
3. Démarrage de conteneurs .................................................................................................. 21
4. Arrêt / suppression de conteneurs / images ....................................................................... 21
5. Copie de fichiers ................................................................................................................ 21
6. Paramètres de démarrage................................................................................................... 21
C. MODIFICATION DES CARACTERISTIQUES............................................................................... 21
D. EXERCICE : SERVEUR WEB PERSONNALISE ............................................................................ 21
VII. IMAGES & LAYERS & CONTAINERS ....................................................................................... 22
A. MODELE EN COUCHES ........................................................................................................... 22
B. PILOTES ET SYSTEMES DE FICHIERS ....................................................................................... 22
C. CONVERSION D’UN CONTENEUR EN IMAGE ........................................................................... 22
D. EXPLORATION ET OPTIMISATION D’UNE IMAGE .................................................................... 22
E. OPTIONS DE CONVERSION...................................................................................................... 22
F. ARCHIVAGE D’UNE IMAGE ........................................................................................................ 22
G. GESTION DES IMAGES ............................................................................................................ 22
H. UTILISATION DE DEPOT ......................................................................................................... 22
I. ROOTFS ...................................................................................................................................... 22
1. Alpine Linux...................................................................................................................... 22
2. Rocky linux ....................................................................................................................... 22
VIII. DOCKERFILE ........................................................................................................................ 23
A. LES PRINCIPALES COMMANDES ............................................................................................. 23
B. MULTI STAGED BUILDS ......................................................................................................... 23
2 / 41
C. GIT ......................................................................................................................................... 23
D. SUPERVISORD......................................................................................................................... 23
IX. VOLUMES .................................................................................................................................. 24
A. CREATION D’UN VOLUME ...................................................................................................... 24
B. CREATION A LA VOLEE .......................................................................................................... 24
C. DROITS SUR LES CONTENEURS .............................................................................................. 24
D. GESTION DES VOLUMES ......................................................................................................... 24
E. BIND ET TMPFS ...................................................................................................................... 24
1. Montage d’un répertoire sur l’hôte .................................................................................... 24
2. Montage bind d’un fichier sur l’hôte ................................................................................. 24
3. Montage bind avec docker compose ................................................................................. 24
4. Montage d’un volume dans la mémoire vive .................................................................... 24
X. EXERCICES ................................................................................................................................... 25
A. SECURITY BY DEFAULT.......................................................................................................... 25
1. SSH.................................................................................................................................... 25
2. SSL .................................................................................................................................... 25
B. PRIVACY BY DESIGN .............................................................................................................. 25
C. ACCOUNTABILITY.................................................................................................................. 25
XI. DOCKER COMPOSE ................................................................................................................... 26
A. [Link] ........................................................................................................ 26
B. DOCKER COMPOSE + DOCKERFILE......................................................................................... 26
C. ARRET ET DESINSTALLATION ................................................................................................ 26
XII. QUELQUES OUTILS D’ADMINISTRATION ................................................................................. 27
A. PORTAINER ............................................................................................................................ 27
B. NETDATA ............................................................................................................................... 27
C. LAZYDOCKER ......................................................................................................................... 27
XIII. HEALTHCHECK .................................................................................................................... 28
A. LIGNE DE COMMANDE ........................................................................................................... 28
B. DOCKERFILE .......................................................................................................................... 28
C. DOCKER COMPOSE ................................................................................................................. 28
1. Service Apache .................................................................................................................. 28
2. Service PostgreSQL .......................................................................................................... 28
3. Service MariaDB ............................................................................................................... 28
4. Service MySQL ................................................................................................................. 28
1. Service MongoDB ............................................................................................................. 28
2. Service Redis ..................................................................................................................... 28
3. Service SSH....................................................................................................................... 28
4. Annuaire OpenLDAP ........................................................................................................ 28
D. DEPENDANCES ....................................................................................................................... 28
XIV. LES VARIABLES ARG, ENV ET LES SECRETS..................................................................... 29
A. ARG ...................................................................................................................................... 29
1. Dockerfile .......................................................................................................................... 29
2. docker compose ................................................................................................................. 29
A. ENV ....................................................................................................................................... 29
1. docker run .......................................................................................................................... 29
2. Dockerfile & Entrypoint .................................................................................................... 29
3. Les fichiers d’environnements .......................................................................................... 29
B. LES SECRETS .......................................................................................................................... 29
1. Le principe......................................................................................................................... 29
2. Exemple concret ................................................................................................................ 29
XV. LES RESEAUX ............................................................................................................................ 30
A. CREER UN RESEAU ................................................................................................................. 30
1. Réseau host ........................................................................................................................ 30
2. Réseau Classique (bridge) ................................................................................................. 30
3. Réseau Internal .................................................................................................................. 30
4. Utiliser des réseaux déjà existants ..................................................................................... 30
3 / 41
5. Création à la volée ............................................................................................................. 30
6. Réseau overlay .................................................................................................................. 30
7. Réseau none....................................................................................................................... 30
B. IP FIXES ................................................................................................................................. 30
1. Dans un réseau existant ..................................................................................................... 30
2. Dans un nouveau réseau .................................................................................................... 30
XVI. LES FORMATS ....................................................................................................................... 31
XVII. SECURITE .............................................................................................................................. 32
A. NAMESPACE........................................................................................................................... 32
1. Principes ............................................................................................................................ 32
2. Exemples ........................................................................................................................... 32
B. CGROUPS ............................................................................................................................... 32
1. Ressources en mémoire vive ............................................................................................. 32
2. Ressources processeur ....................................................................................................... 32
3. Ressources stockage .......................................................................................................... 32
4. Docker compose ................................................................................................................ 32
5. Resources réseau ............................................................................................................... 32
6. Métriques ........................................................................................................................... 32
C. LINUX CAPABILITIES.............................................................................................................. 33
1. Les privilèges .................................................................................................................... 33
2. Le mode privilégié............................................................................................................. 33
D. AUDIT .................................................................................................................................... 33
E. FRONT-END ............................................................................................................................ 33
1. Solutions ............................................................................................................................ 33
2. Entêtes HTTP .................................................................................................................... 33
3. Fail2ban ............................................................................................................................. 33
4. Crowdsec ........................................................................................................................... 33
XVIII. SAUVEGARDES & RESTAURATIONS DES VOLUMES ............................................................ 34
A. SAUVEGARDES SQL .............................................................................................................. 34
1. PostgreSQL ....................................................................................................................... 34
2. MariaDB ............................................................................................................................ 34
3. MySQL .............................................................................................................................. 34
B. SAUVEGARDES DES REPERTOIRES MONTES ........................................................................... 34
XIX. DOCKER MACHINE ............................................................................................................... 35
A. INSTALLATION ....................................................................................................................... 35
B. CREATION D’UN CLUSTER VIRTUALBOX .............................................................................. 35
4. Installer Virtualbox............................................................................................................ 35
5. Création de 3 machines ..................................................................................................... 35
XX. SWARM...................................................................................................................................... 36
A. VUE D’ENSEMBLE .................................................................................................................. 36
B. BRIQUES TECHNIQUES ........................................................................................................... 36
C. RESEAU VIRTUEL ET SECURITE .............................................................................................. 36
1. Certificats .......................................................................................................................... 36
2. Docker network ................................................................................................................. 36
D. MISE EN OEUVRE ................................................................................................................... 36
1. Ouverture des ports ........................................................................................................... 36
2. Initialisation d’un noeud .................................................................................................... 36
3. Création d’un service......................................................................................................... 36
4. Scalabilité .......................................................................................................................... 36
XXI. SUPERVISION ........................................................................................................................ 37
A. COMMANDES ......................................................................................................................... 37
B. OUTILS GUI ........................................................................................................................... 37
1. Rancher.............................................................................................................................. 37
2. OpenNebula ....................................................................................................................... 37
C. ZABBIX .................................................................................................................................. 37
XXII. RESSOURCES......................................................................................................................... 38
XXIII. ANNEXE................................................................................................................................. 39
4 / 41
A. AUTRES OUTILS DE CONTENEURISATION .............................................................................. 39
1. En production .................................................................................................................... 39
2. Hors production ................................................................................................................. 40
B. KUBERNETES ......................................................................................................................... 41
1. Fonctionnement ................................................................................................................. 41
2. Prérequis ............................................................................................................................ 41
3. Installation de k8s .............................................................................................................. 41
5 / 41
II. P REAMBULE
A. Ce document
Informations
Nom du
docume [Link] Référence DEVOPS-DOCKER
nt
Version 2024.12.06 Pages 41
Dernière
Date de
07/03/2017 modification 30/08/2025
création
:
Pierre ROYER
Tél : (+33) 614 672 909 Contributeur(
Auteur :
[Link] s) :
eau
☐ Confidentiel
Clients et
Mode de ☐ Restreint
Diffusion : stagiaires[Link]
diffusion ☒ Interne
.fr/
☐ Libre
Annexes
[Link]
:
B. Conventions
[root@Rocky ~]# représente un prompt bash en root sur un serveur Rocky Linux
root@Debian:~ # représente un prompt bash en root sur un serveur Debian
[docker@Rocky ~]$ désigne un compte utilisateur local
Les commandes sont en gras, le contenu d’un fichier est encadré, les caractères en italique
sont des exemples de paramètres à adapter selon notre environnement :
[Link] localhost
::1 localhost ip6-localhost ip6-loopback
[Link] rpi5b [Link]
2a01:cafe:face:feed::5 rpi5b [Link]
Présentation de la formation
Docker est un projet open source qui permet d’automatiser le déploiement d'applications dans des
conteneurs logiciels. Il peut empaqueter une application et ses dépendances dans un conteneur
isolé, qui pourra être exécuté sur n'importe quel serveur.
Cette formation vous permettra de comprendre les concepts d’isolation et de conteneurisation dans
un environnement Linux, de créer vos propres images, conteneurs, réseaux virtuels, via Docker
Engine, Dockerfile, Docker compose...
Elle s’effectuera sur la dernière version de Docker, sur Rocky Linux ou Ubuntu server.
Objectifs
• Installer, paramétrer et exploiter Docker dans un contexte d’intégration continue (CI / CD)
• Utiliser et créer ses propres images personnalisées
• Paramétrer, déployer, automatiser, et standardiser les environnements
• Gérer ses conteneurs et la sécurité des environnements en maîtrisant les ressources système
• Créer des réseaux sécurisés et isolés, afin de protéger ses données sensibles
• Gérer ses volumes : statiques, bind
• Publier ses services sur le réseau
• Gérer les variables ARG et ENV, et les secrets
• Utiliser les formats pour filtrer les informations
• Orchestrer ses conteneurs dans des machines virtuelles
• Utiliser des interfaces graphiques (Portainer, Netdata…)
• Assurer la haute disponibilité, et la montée en charge (scalability) via swarm
• Utiliser les HealthCheck pour auditer l’état de santé des conteneurs
• Utiliser le mode privilégié et les "capabilities"
• Acquérir une autonomie sur Docker.
Public concerné
Pré-recquis
Les méthodes agiles sont des groupes de pratiques de pilotage et de réalisation de projets.
Elles ont pour origine le manifeste Agile rédigé en 2001, qui consacre le terme d'« agile »
pour référencer de multiples méthodes existantes.
Les principes :
1 : les individus et leurs interactions, plus que les processus et les outils
2 : des logiciels opérationnels, plus qu’une documentation exhaustive
3 : la collaboration avec les clients, plus que la négociation contractuelle
4 : l’adaptation au changement, plus que le suivi d’un plan.
B. DevOps
Le client est devenu le point central dans les contextes (méthodologies) Agiles, et les il est
de bon ton de pouvoir s'adapter à ses demandes rapidement.
Avec les évolutions fulgurantes de l'informatique, les métiers se sont largement multipliés
et spécialisés. Les technologies sont devenues complexes, les outils de développement
multiples, et les contraintes métier (et business) sont pour leur part sujettes à des
adaptations et mises à jour de plus en plus imminentes (Time To Market).
Afin de simplifier la flexibilité demandée par les métiers (Dev), et la mise en place des
évolutions technique (Ops), le DevOps automatise les tâches intermédiaires via des outils
(industrialisation), et en réorganisant les process de déploiement (méthodologies).
Les solutions techniques permettent une extension des ressources matérielles (scalabilité),
gérées par les exploitants, et doivent aussi répondre à une flexibilité (ou élasticité) vers le
bas, et/ou vers le haut.
Docker fait partie de cette gamme d'outils disponible, qui permettent de raccourcir le
temps de mise en production des nouveaux socles, avec des pipelines CI / CD (Continuous
Integration / Continuous Delivery) :
Les processus liés à la sécurité sont souvent négligés avec l’Agilité (manque de traçabilité),
et dans le DevOps (déploiements très rapides). Ils sont aussi souvent isolés et confiés à
une équipe spécifique.
La sécurité n'est pas forcément considérée comme une priorité dans le développement
d'applications traditionnel. Docker dispose de solutions sécurisées, dans la mesure où les
interfaces avec la chaîne d’intégration (Git ? Microsoft Windows ?) sont elles-mêmes
sécurisées… Gardez à l’esprit ces principes :
- La question n'est pas de savoir si vous allez être attaqué, mais quand…
- La sécurité dépend toujours du maillon le plus faible
- Appliquez la règle du moindre privilège
- La théorie du chaos : de petites variations dans l’état initial peuvent entrainer
de grandes variations dans l’état final (effet papillon).
Les "pets" sont constitués de serveurs traités comme des animaux de compagnie, c'est-à-
dire qu'ils sont choyés et soignés individuellement, avec une grande attention portée à leur
santé et à leur bien-être
En revanche, dans un environnement "cattle", les serveurs sont traités comme du bétail,
c'est-à-dire qu'ils sont considérés comme des ressources jetables qui peuvent être
facilement remplacées en cas de problème. Les serveurs sont créés et détruits rapidement
et facilement, et les mises à jour sont effectuées en utilisant des scripts automatisés qui
permettent de mettre rapidement en place des configurations standardisées. Docker est
donc clairement orienté "cattle".
Outre les classiques offres d’hébergement IaaS, PaaS, SaaS, le CaaS (Container as a
Service) est devenu monnaie courante dans les Clouds privés, hybrides, et publics.
Les machines virtuelles partagent un même serveur physique, alors que les conteneurs
partagent le même système d’exploitation.
La virtualisation sur les ordinateurs actuels n’est possible qu’avec l’activation sur les
processeurs (UEFI) des technologies telles que Intel® VT, AMD-V, ou ARM VHE
(Virtualization Host Extensions).
Source : [Link]
Les solutions présentes sur le marché sont Proxmox, VMware vSphere (ESXi / ESX), KVM,
Citrix Xen Server, Microsoft Hyper-V Server, Parallels Server Bare MetalOracle VM.
Source : [Link]
Les solutions récurrentes sur le marché sont les logiciels VMware Workstation / Player,
QEMU, Microsoft Virtual Server, Parallels Desktop / Server, Oracle VM VirtualBox…
C. Virtualisation systèmes
D. Virtualisation applicative
Contrairement aux machines virtuelles, les conteneurs Docker n'incluent pas de système
d'exploitation, mais permettent d'isoler des applications dans des contextes.
Ce principe d’isolation existe depuis plusieurs années, et a été implémenté entre autres
sur :
Source : [Link]
E. Virtualisation virtuelle
La virtualisation système et applicative sont deux concepts différents, mais qui peuvent
être complémentaires. Il est ainsi possible de contenir des conteneurs dans un système
virtualisé :
Copyright © 2025, Pierre ROYER - [Link] 14 / 41
Source : [Link]
Si l’on pousse le raisonnement, il est tout à fait envisageable (mais pas conseillé !)
d’exécuter Docker… dans un autre conteneur Docker, lancé au sein d’une machine
virtuelle qui est hébergée sur un serveur physique…
F. LinuX Containers
Installation :
Quelques commandes :
- lxc-checkconfig
- lxc storage list
- lxc network ls
- lxc image list
- lxc launch images:ubuntu/jammy/amd64 my-ubuntu
- lxc-create
- lxc-start -n container
- lxc-attach
- lxc-console -n container
- lxc-info
- lxc list
- lxc-stop -n container
Copyright © 2025, Pierre ROYER - [Link] 15 / 41
- lxc-destroy -n container
G. Présentation de Docker
Docker est un logiciel sous licence Apache 2.0, qui a été distribué en tant que projet open
source à partir de mars 2013.
Outre le fait d’isoler un système de fichiers et des réseaux, Docker Engine intègre des
outils d’orchestration, que nous aborderons dans le chapitre dédié à Swarm :
H. Exemple d’implémentation
Ce document se base sur Docker CE, et un système d’exploitation Rocky Linux 10 Minimal.
A. Procédure
Pour des raisons évidentes de sécurité sur un serveur Linux, il faut protéger (et donc
isoler) la partition root du système ( / ) des partitions utilisées par docker.
1. Installation manuelle
B. Post-installation
{
"storage-driver": "vfs"
}
#{
# "storage-driver": "devicemapper"
#}
Vérifications de l’installation :
[docker@Rocky ~]$ docker version
[docker@Rocky ~]$ docker info
Docker met à disposition des réseaux virtuels, visibles via la commande suivante :
[docker@Rocky ~]$ docker network ls
NETWORK ID NAME DRIVER
7fca4eb8c647 bridge bridge
9f904ee27bf5 none null
cf03ee007fb4 host host
Le réseau “bridge” utilise l’interface réseau « docker0 », qui est définie dans la machine
hôte.
Test de l’installation :
Alias
Contactez-moi
pour planifier vos formations,
et aborder la suite du programme ci-dessous.
[Link]
Tél : (+33) 614 672 909
A bientôt…
3. Démarrage de conteneurs
5. Copie de fichiers
6. Paramètres de démarrage
A. Modèle en couches
E. Options de conversion
H. Utilisation de dépôt
I. Rootfs
1. Alpine Linux
2. Rocky linux
C. Git
D. supervisord
Un volume permet à des conteneurs de stocker des informations persistantes. Il peut être
partagé entre plusieurs containers.
B. Création à la volée
E. Bind et tmpfs
A. Security by default
1. SSH
2. SSL
B. Privacy by design
C. Accountability
A. [Link]
C. Arrêt et désinstallation
A. Portainer
B. Netdata
C. lazydocker
A. Ligne de commande
B. Dockerfile
C. Docker compose
1. Service Apache
2. Service PostgreSQL
3. Service MariaDB
4. Service MySQL
1. Service MongoDB
2. Service Redis
3. Service SSH
4. Annuaire OpenLDAP
D. Dépendances
A. ARG
1. Dockerfile
2. docker compose
A. ENV
1. docker run
B. Les secrets
1. Le principe
2. Exemple concret
A. Créer un réseau
1. Réseau host
IPV4
IPV6
3. Réseau Internal
5. Création à la volée
6. Réseau overlay
7. Réseau none
B. IP fixes
1. Principes
2. Exemples
Namespace NET
Namespace PID
Namespace UID
Encapsulations
B. Cgroups
2. Ressources processeur
3. Ressources stockage
4. Docker compose
5. Resources réseau
6. Métriques
1. Les privilèges
2. Le mode privilégié
D. Audit
E. Front-end
1. Solutions
2. Entêtes HTTP
3. Fail2ban
4. Crowdsec
1. PostgreSQL
2. MariaDB
3. MySQL
A. Installation
1. Installer Virtualbox
2. Création de 3 machines
A. Vue d’ensemble
B. Briques techniques
1. Certificats
2. Docker network
D. Mise en oeuvre
4. Scalabilité
A. Commandes
B. Outils GUI
1. Rancher
2. OpenNebula
C. Zabbix
1. En production
Proxmox
Apache Mesos
k3s
Microk8s
Docker Desktop
Minikube
1. Fonctionnement
2. Prérequis
Stockage
Virtualisation
Compte de service
Docker
SeLinux
3. Installation de k8s