0% ont trouvé ce document utile (0 vote)
2 vues41 pages

DevOps Docker

Docker suite

Transféré par

ousman
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues41 pages

DevOps Docker

Docker suite

Transféré par

ousman
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Docker dans le

Cette formation explique la mise en œuvre de conteneurs avec Docker.

Après une présentation des concepts, nous découvrons les commandes permettant
de gérer des applications isolées dans leurs contextes.

Nous continuerons avec une approche sécurité et supervision,


en incluant les bonnes pratiques de mise en production CI / CD.

Pour des demandes de formations, contactez-moi :


[Link]

Bonne lecture…

Pierre ROYER Manager | Architecte |Formateur #numérique

Copyright © 2025, Pierre ROYER - [Link]


I. INDEX

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

Les syntaxes utilisées dans ce document :

[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 :

[root@Server ~]# vi /etc/hosts

[Link] localhost
::1 localhost ip6-localhost ip6-loopback
[Link] rpi5b [Link]
2a01:cafe:face:feed::5 rpi5b [Link]

Information utile Attention particulière Risque important

Copyright © 2025, Pierre ROYER - [Link] 6 / 41


C. Objectifs pédagogiques

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é

• Administrateur / ingénieurs systèmes / réseaux, DevOps


• Développeurs, Lead dev.
• Responsable de pôle technique, CTO
• Scrum master, Chefs de projets infrastructures
• Ecoles d’Ingénieurs numériques.

Pré-recquis

• Aisance sur les systèmes Linux et l'éditeur VI.

Copyright © 2025, Pierre ROYER - [Link] 7 / 41


III. I NTRODUCTION
A. Contexte Agile

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 méthodes agiles impliquent au maximum le demandeur (client) et permettent une


grande réactivité à ses demandes. Elles reposent sur un cycle de développement itératif,
incrémental et adaptatif.

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.

Copyright © 2025, Pierre ROYER - [Link] 8 / 41


Le cycle DevOps

Patrick Debois est le fondateur du DevOps

Le DevOps vise à répondre à des objectifs complémentaires, et contradictoires :


- Les Dev doivent s’adapter rapidement et continuellement
- Les Ops doivent garantir stabilité, sécurité, conformité
- Briser le « mur de la confusion », en unifiant le développement logiciel (dev) et
l'administration des infrastructures informatiques (ops).

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) :

Copyright © 2025, Pierre ROYER - [Link] 9 / 41


Dans ce contexte complexe, il devient parfois difficile d’implémenter rapidement, de
manière fiable et sécurisée les infrastructures (serveurs, réseaux, bases de données,
sauvegardes...), et les outils DevOps.

C. La sécurité avec DevSecOps

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.

À l’ère de la livraison et de l’intégration continues, le processus de développement est un


défi à ne surtout pas sous-estimer. C’est pourquoi les entreprises vont de plus en plus
souvent au-delà de l’approche DevOps qui lie étroitement le développement et
l’exploitation dès le début du processus pour y inclure la composante sécurité, d’où
l’abréviation DevSecOps. La démarche DevSecOps tient compte à la fois des exigences en
termes de vitesse de développement et de sécurité.

L'approche DevSecOps implique de réfléchir à la sécurité de l'application et de


l'infrastructure dès le départ : principe de « security by default ». Il convient également
d'automatiser certaines passerelles de sécurité afin d'éviter tout ralentissement des
workflows DevOps.

Copyright © 2025, Pierre ROYER - [Link] 10 / 41


Cette approche est notamment indispensable, pour répondre par exemple aux contraintes
du RGPD.

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).

D. Cattle not pets

Il s’agit d’un des principes de DevOps.

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.

Copyright © 2025, Pierre ROYER - [Link] 11 / 41


IV. L A VIRTUALISATION
La virtualisation de serveurs est un concept qui existe depuis 1972 : IBM le pratiquait
avec des mainframes VM/370.

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).

A. Hyperviseur de type 1 (paravirtualisation)

En paravirtualisation, l'hyperviseur capture les appels système de l'invité et les transmet


directement au matériel. L'invité exploite ainsi les ressources matérielles partagées par
l'ordinateur hôte. La paravirtualisation offre des performances optimales. Cependant, les
VMs doivent supporter le processeur de l’hôte : on ne peut pas installer un OS conçu pour
Intel/AMD sur ARM64.

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.

Copyright © 2025, Pierre ROYER - [Link] 12 / 41


B. Hyperviseur de type 2 (émulateurs)

L'hyperviseur (hôte) crée un environnement virtuel simulé complet. Le système


d’exploitation invité n’aura accès qu’à des ressources simulées (processeur, disque,
mémoire, carte graphique, interfaces réseau...) et non aux ressources matérielles réelles.
Les performances en émulation sont dégradées du fait de cette simulation.

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

Copyright © 2025, Pierre ROYER - [Link] 13 / 41


Source : [Link]

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 :

- Unix FreeBSD avec « BSD Jail » dès 1999


- Sun Solaris 10 (Oracle) en 2005. Les conteneurs Solaris sont appelés « zones »
- Linux en 2008 : LXC (LinuX Containers)

Positionnement d’un conteneur

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

Il s’agit d’un système de virtualisation, utilisant l'isolation comme méthode de


cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des
environnements Linux isolés les uns des autres dans des conteneurs, partageant le même
noyau.

Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur,


mémoire vive, réseau, système de fichier…) et non pas de la machine

Installation :

[root@Rocky ~]# dnf install -y lxc lxc-templates wget


[root@Rocky ~]# systemctl start lxc
[root@Rocky ~]# lxd init

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.

Docker 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.

Docker utilise des fonctionnalités natives de Linux comme :


- son noyau
- ses namespaces : isolation des processus dans une ressource partagée
- ses Cgroups (control groups) : fonctionnalités pour limiter l'utilisation des
ressources (processeur, mémoire, utilisation disque, etc.)
- une surcouche de LXC (LinuX Containers).

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

Le schéma suivant représente un exemple d’implémentation de conteneurs dans plusieurs


environnements, accessibles via un reverse-proxy Traefik. L’ensemble est hébergé dans
une machine virtuelle.

Copyright © 2025, Pierre ROYER - [Link] 16 / 41


Docker répond aux principes d’urbanisation, avec un ensemble de services faiblement
couplés (→ simplifier la gestion des dépendances) : une application doit appartenir à un
seul bloc, afin de limiter les impacts lorsqu'on remplace celle-ci. Le site officiel de Docker
préconise : “ It is generally recommended that you separate areas of concern by using one
service per container”

MAIS ALLONS DE CE PAS AU CŒUR DU SUJET…

Copyright © 2025, Pierre ROYER - [Link] 17 / 41


V. I NSTALLATION

Docker est distribué sous deux licences :


- Docker EE (Enterprise Edition) qui offre un support payant. Trois versions
existent : Basic, Standard et Advanced.
- Docker CE (Community Edition), sans support.

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.

Lors de l’installation su système, il faut :

- Prévoir un espace de stockage suffisant (au moins 10 Go) sur le filesystem


/var/lib/docker
- Créer un autre filesystem isolé pour le compte docker ( /home ), qui va héberger
les volumes de données persistantes de type « bind ».

Paramétrer une IP fixe et une passerelle sur votre serveur


Faire correspondre le nom du serveur aux adresses des interfaces réseau : /etc/hosts
Déclarer les DNS : /etc/[Link]
Nommer le serveur :

[root@Rocky ~]# hostnamectl set-hostname 'Docker'

1. Installation manuelle

Suivre la procédure sur le site officiel : [Link]

Le groupe docker à été créé dans /etc/group

Créer un compte de service docker avec le même groupe :

[root@Rocky ~]# useradd -m -s /bin/bash -g docker docker

[root@Rocky ~]# systemctl start docker


[root@Rocky ~]# systemctl enable docker

2. Installation via un script

[root@Rocky ~]# apt install curl


[root@Rocky ~]# curl -fsSl [Link] | sh

B. Post-installation

Configuration du driver pour le stockage (optionnel)


Copyright © 2025, Pierre ROYER - [Link] 18 / 41
[root@Rocky ~]$ vi /etc/docker/[Link]

{
"storage-driver": "vfs"
}
#{
# "storage-driver": "devicemapper"
#}

Configuration des DNS :

[root@Rocky ~]$ vi /etc/default/docker

DOCKER_OPTS="--dns [Link] --dns [Link] --dns 2606:4700:4700::1111


--dns 2606:4700:4700::1001"

[root@Rocky ~]$ systemctl reload docker

Utiliser le compte créé pour gérer docker :


[root@Rocky ~]# su - docker

Vérifications de l’installation :
[docker@Rocky ~]$ docker version
[docker@Rocky ~]$ docker info

Vérification des interfaces et réseaux virtuels :


Lors de l’installation, une interface virtuelle est créée :
[docker@Rocky ~]$ ifconfig -a
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet [Link] netmask [Link] broadcast [Link]

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 :

[docker@Rocky ~]$ docker run hello-world

Alias

Afin de faciliter la saisie des commandes Docker, je recommande l’utilisation d’alias


personnalisés Unix :

Copyright © 2025, Pierre ROYER - [Link] 19 / 41


[docker@Rocky ~]$ vi ~/.bashrc

alias dsta='docker start'


alias dsto='docker stop'
alias dps='docker ps -a --format "table
{{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dstoa='docker stop $(docker ps -a -q)'
alias dex='docker exec -ti'
alias dat='docker attach'
alias dstat='docker stats'
alias dlog='docker logs'
alias drm='docker rm'
alias dim='docker images'
alias drmi='docker rmi'
alias dbp='docker builder prune'
alias dcp='docker compose'
alias dvol='docker volume ls --format "table
{{.Name}}\t{{.Mountpoint}}"'
alias dsdf='docker system df -v'
etc...

Copyright © 2025, Pierre ROYER - [Link] 20 / 41


VI. P REMIERS PAS

Contactez-moi
pour planifier vos formations,
et aborder la suite du programme ci-dessous.

[Link]
Tél : (+33) 614 672 909

A bientôt…

A. Aperçu des commandes

B. Installation d’un conteneur


1. Récupération d’une image

2. Création d’un conteneur

3. Démarrage de conteneurs

4. Arrêt / suppression de conteneurs / images

5. Copie de fichiers

6. Paramètres de démarrage

C. Modification des caractéristiques

D. Exercice : serveur web personnalisé

Copyright © 2025, Pierre ROYER - [Link] 21 / 41


VII. I MAGES & L AYERS & C ONTAINERS

A. Modèle en couches

B. Pilotes et systèmes de fichiers

C. Conversion d’un conteneur en image

D. Exploration et optimisation d’une image

E. Options de conversion

F. Archivage d’une image

G. Gestion des images

H. Utilisation de dépôt

I. Rootfs

1. Alpine Linux

2. Rocky linux

Copyright © 2025, Pierre ROYER - [Link] 22 / 41


VIII. D OCKERFILE
Les Dockerfiles sont des scripts permettant d’automatiser et d’industrialiser la création
d’images personnalisées.

A. Les principales commandes

B. Multi Staged Builds

C. Git

D. supervisord

Copyright © 2025, Pierre ROYER - [Link] 23 / 41


IX. V OLUMES

Un volume permet à des conteneurs de stocker des informations persistantes. Il peut être
partagé entre plusieurs containers.

A. Création d’un volume

B. Création à la volée

C. Droits sur les conteneurs

D. Gestion des volumes

E. Bind et tmpfs

1. Montage d’un répertoire sur l’hôte

2. Montage bind d’un fichier sur l’hôte

3. Montage bind avec docker compose

4. Montage d’un volume dans la mémoire vive

Copyright © 2025, Pierre ROYER - [Link] 24 / 41


X. E XERCICES

A. Security by default

1. SSH

2. SSL

B. Privacy by design

C. Accountability

Copyright © 2025, Pierre ROYER - [Link] 25 / 41


XI. DOCKER COMPOSE

A. [Link]

B. docker compose + Dockerfile

C. Arrêt et désinstallation

Copyright © 2025, Pierre ROYER - [Link] 26 / 41


XII. Q UELQUES OUTILS
D ’ ADMINISTRATION
OK, maintenant que l’on maîtrise Dockerfile, docker compose et les volumes, je vous
propose des outils de supervision de nos ressources.

A. Portainer

B. Netdata

C. lazydocker

Copyright © 2025, Pierre ROYER - [Link] 27 / 41


XIII. H EALTHCHECK

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

Copyright © 2025, Pierre ROYER - [Link] 28 / 41


XIV. L ES VARIABLES ARG, ENV ET LES
SECRETS
ARG est utilisé pour construire nos images docker (docker build). Ces variables n’ont pas
de persistance dans le conteneur, mais peuvent être visibles avec la commande docker
history…

A. ARG

1. Dockerfile

2. docker compose

A. ENV

1. docker run

2. Dockerfile & Entrypoint

3. Les fichiers d’environnements

B. Les secrets

1. Le principe

2. Exemple concret

Copyright © 2025, Pierre ROYER - [Link] 29 / 41


XV. L ES RESEAUX

A. Créer un réseau
1. Réseau host

2. Réseau Classique (bridge)

IPV4

IPV6

3. Réseau Internal

4. Utiliser des réseaux déjà existants

5. Création à la volée

6. Réseau overlay

7. Réseau none

B. IP fixes

1. Dans un réseau existant

2. Dans un nouveau réseau

Copyright © 2025, Pierre ROYER - [Link] 30 / 41


XVI. L ES FORMATS

Copyright © 2025, Pierre ROYER - [Link] 31 / 41


XVII. S ECURITE
A. Namespace

1. Principes

2. Exemples

Création d’un Namespace UTC

Namespace NET

Namespace PID

Namespace UID

Encapsulations

Montage d’une unité de stockage

B. Cgroups

1. Ressources en mémoire vive

2. Ressources processeur

3. Ressources stockage

4. Docker compose

5. Resources réseau

6. Métriques

Copyright © 2025, Pierre ROYER - [Link] 32 / 41


C. Linux capabilities

1. Les privilèges

2. Le mode privilégié

D. Audit

E. Front-end

1. Solutions

2. Entêtes HTTP

3. Fail2ban

4. Crowdsec

Copyright © 2025, Pierre ROYER - [Link] 33 / 41


XVIII. S AUVEGARDES & RESTAURATIONS DES
VOLUMES
A. Sauvegardes SQL

1. PostgreSQL

2. MariaDB

3. MySQL

B. Sauvegardes des répertoires montés

Copyright © 2025, Pierre ROYER - [Link] 34 / 41


XIX. D OCKER MACHINE

A. Installation

B. Création d’un cluster VirtualBox

1. Installer Virtualbox

2. Création de 3 machines

Copyright © 2025, Pierre ROYER - [Link] 35 / 41


XX. S WARM

A. Vue d’ensemble

B. Briques techniques

C. Réseau virtuel et sécurité

1. Certificats

2. Docker network

D. Mise en oeuvre

L’exercice suivant consiste à installer un cluster de serveurs nginx

1. Ouverture des ports

2. Initialisation d’un noeud

3. Création d’un service

4. Scalabilité

Copyright © 2025, Pierre ROYER - [Link] 36 / 41


XXI. S UPERVISION

A. Commandes

B. Outils GUI

1. Rancher

2. OpenNebula

C. Zabbix

Copyright © 2025, Pierre ROYER - [Link] 37 / 41


XXII. R ESSOURCES

Copyright © 2025, Pierre ROYER - [Link] 38 / 41


XXIII. A NNEXE

A. Autres outils de conteneurisation

1. En production

Proxmox

Apache Mesos

k3s

Microk8s

Copyright © 2025, Pierre ROYER - [Link] 39 / 41


2. Hors production

Docker Desktop

Minikube

Copyright © 2025, Pierre ROYER - [Link] 40 / 41


B. Kubernetes

1. Fonctionnement

2. Prérequis

Stockage

Virtualisation

Compte de service

Docker

SeLinux

3. Installation de k8s

Copyright © 2025, Pierre ROYER - [Link] 41 / 41

Vous aimerez peut-être aussi