0% ont trouvé ce document utile (0 vote)
7 vues35 pages

Formation Docker : Mise en œuvre et pratiques

Cette formation sur Docker couvre l'implémentation de conteneurs, la gestion des applications isolées, ainsi que les bonnes pratiques de sécurité et de supervision dans un contexte CI/CD. Les participants apprendront à créer et gérer des images, des conteneurs, et des réseaux virtuels tout en intégrant des outils DevOps et DevSecOps. Le document inclut également des informations sur l'installation, les commandes de base, et les aspects de sécurité liés à l'utilisation de Docker.

Transféré par

sami
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)
7 vues35 pages

Formation Docker : Mise en œuvre et pratiques

Cette formation sur Docker couvre l'implémentation de conteneurs, la gestion des applications isolées, ainsi que les bonnes pratiques de sécurité et de supervision dans un contexte CI/CD. Les participants apprendront à créer et gérer des images, des conteneurs, et des réseaux virtuels tout en intégrant des outils DevOps et DevSecOps. Le document inclut également des informations sur l'installation, les commandes de base, et les aspects de sécurité liés à l'utilisation de Docker.

Transféré par

sami
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 © 2024, Pierre ROYER - [Link]


I. INDEX

I. INDEX ........................................................................................................................................... 2
II. Préambule...................................................................................................................................... 5
A. CE DOCUMENT ......................................................................................................................... 5
B. CONVENTIONS ......................................................................................................................... 5
C. OBJECTIFS PEDAGOGIQUES ...................................................................................................... 6
III. Introduction ............................................................................................................................... 7
A. CONTEXTE AGILE .................................................................................................................... 7
B. DEVOPS ................................................................................................................................... 7
C. LA SECURITE AVEC DEVSECOPS ............................................................................................. 8
D. CATTLE NOT PETS .................................................................................................................... 9
IV. La virtualisation ...................................................................................................................... 11
A. HYPERVISEUR DE TYPE 1 (PARAVIRTUALISATION) ............................................................... 11
B. HYPERVISEUR DE TYPE 2 (EMULATEURS).............................................................................. 12
C. VIRTUALISATION SYSTEMES ................................................................................................. 12
D. VIRTUALISATION APPLICATIVE ............................................................................................. 13
E. VIRTUALISATION VIRTUELLE .................................................................................................... 13
F. LINUX CONTAINERS .................................................................................................................. 14
G. PRESENTATION DE DOCKER .................................................................................................. 15
H. EXEMPLE D’IMPLEMENTATION .............................................................................................. 15
V. Installation................................................................................................................................... 17
A. PROCEDURE ........................................................................................................................... 17
1. Installation manuelle ............................................................................................................. 17
2. Installation via un script ........................................................................................................ 17
B. POST-INSTALLATION ............................................................................................................. 17
VI. Premiers pas............................................................................................................................. 21
A. APERÇU DES COMMANDES .................................................................................................... 21
B. INSTALLATION D’UN CONTENEUR ......................................................................................... 21
1. Récupération de l’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
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. OPTIONS DE CONVERSION...................................................................................................... 22
E. ARCHIVAGE D’UNE IMAGE ........................................................................................................ 22
F. GESTION DES IMAGES ................................................................................................................ 22
G. UTILISATION DE DEPOT ......................................................................................................... 22
VIII. Dockerfile ............................................................................................................................. 23
A. LES PRINCIPALES COMMANDES ............................................................................................. 23
B. MULTI STAGED BUILDS ......................................................................................................... 23
C. GIT ......................................................................................................................................... 23
D. SUPERVISORD......................................................................................................................... 23
E. EXERCICE .................................................................................................................................. 23
IX. Volumes .................................................................................................................................... 24
A. CREATION D’UN VOLUME ...................................................................................................... 24
2 / 35
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. docker-compose .......................................................................................................................... 25
A. [Link] ........................................................................................................ 25
B. DOCKER-COMPOSE + DOCKERFILE ........................................................................................ 25
C. ARRET ET DESINSTALLATION ................................................................................................ 25
XI. Les outils d’adminitration ...................................................................................................... 26
A. PORTAINER ............................................................................................................................ 26
B. NETDATA ............................................................................................................................... 26
C. CTOP....................................................................................................................................... 26
D. LAZYDOCKER ......................................................................................................................... 26
XII. Healthcheck.............................................................................................................................. 27
A. LIGNE DE COMMANDE ........................................................................................................... 27
B. DOCKERFILE .......................................................................................................................... 27
C. DOCKER-COMPOSE ................................................................................................................ 27
XIII. Les variables ARG, ENV et les secrets .............................................................................. 28
A. ARG ...................................................................................................................................... 28
1. Dockerfile .............................................................................................................................. 28
2. docker-compose..................................................................................................................... 28
A. ENV ....................................................................................................................................... 28
1. Dockerfile & Entry point ....................................................................................................... 28
2. Les fichiers d’environnements .............................................................................................. 28
B. LES SECRETS .......................................................................................................................... 28
XIV. Les réseaux ........................................................................................................................... 29
A. CREER UN RESEAU ................................................................................................................. 29
1. Réseau host ............................................................................................................................ 29
2. Réseau Classique (bridge) ..................................................................................................... 29
3. Réseau Internal ...................................................................................................................... 29
4. Création à la volée ................................................................................................................. 29
5. Réseau overlay ...................................................................................................................... 29
6. Réseau none........................................................................................................................... 29
B. IP FIXES ................................................................................................................................. 29
1. Dans un réseau existant ......................................................................................................... 29
2. Dans un nouveau réseau ........................................................................................................ 29
XV. Les formats............................................................................................................................... 30
XVI. Sécurité ................................................................................................................................. 31
A. NAMESPACE........................................................................................................................... 31
1. Principes ................................................................................................................................ 31
2. Exemples ............................................................................................................................... 31
B. CGROUPS ............................................................................................................................... 31
1. Ressources en mémoire vive ................................................................................................. 31
2. Ressources processeur ........................................................................................................... 31
3. Docker-compose.................................................................................................................... 31
C. LINUX CAPABILITIES.............................................................................................................. 31
1. Les privilèges ........................................................................................................................ 31
2. Le mode privilégié................................................................................................................. 31
D. AUDIT .................................................................................................................................... 31
E. FRONT-END ................................................................................................................................ 32
1. Solutions ................................................................................................................................ 32
2. Entêtes HTTP ........................................................................................................................ 32
3. Fail2ban ................................................................................................................................. 32
3 / 35
XVII. Docker machine ................................................................................................................... 33
F. CREATION D’UN CLUSTER VIRTUALBOX .................................................................................. 33
1. Installer Virtualbox................................................................................................................ 33
2. Création de 3 machines ......................................................................................................... 33
XVIII. Swarm ................................................................................................................................... 34
A. VUE D’ENSEMBLE .................................................................................................................. 34
B. BRIQUES TECHNIQUES ........................................................................................................... 34
C. RESEAU VIRTUEL ET SECURITE .............................................................................................. 34
D. MISE EN OEUVRE ................................................................................................................... 34
XIX. Supervision ........................................................................................................................... 35
A. COMMANDES ......................................................................................................................... 35
B. SECURITE ............................................................................................................................... 35
C. OUTILS GUI ........................................................................................................................... 35
XX. Ressources ................................................................................................................................ 35
XXI. Annexe .................................................................................................................................. 35

4 / 35
II. P REAMBULE
A. Ce document

Informations

Nom du
docume [Link] Référence DEVOPS-DOCKER
nt
Version 2023.03.03 Pages 86
Dernière
Date de
07/03/2017 modification 09/02/2024
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
:

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

Le contenu d’un fichier est encadré, les commandes sont en gras :

[Rocky@localhost ~]# vi /etc/ssh/sshd_config

PermitRootLogin yes

Les caractères en italique sont des exemples de paramètres :

[Link] ServeurA
[Link] ServeurB

Information utile Attention particulière Risque important

Copyright © 2024, Pierre ROYER - [Link] 5 / 35


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 © 2024, Pierre ROYER - [Link] 6 / 35


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 © 2024, Pierre ROYER - [Link] 7 / 35


Le cycle DevOps

Patrick Debois est le fondateur du devOps

Le DevOps est un mouvement en ingénierie informatique et une pratique technique visant


à l'unification du développement logiciel (dev) et de l'administration des infrastructures
informatiques (Ops), notamment l'administration système.

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

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.

Copyright © 2024, Pierre ROYER - [Link] 8 / 35


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

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.

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

Copyright © 2024, Pierre ROYER - [Link] 9 / 35


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 © 2024, Pierre ROYER - [Link] 10 / 35


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 © 2024, Pierre ROYER - [Link] 11 / 35


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 © 2024, Pierre ROYER - [Link] 12 / 35


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 © 2024, Pierre ROYER - [Link] 13 / 35
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 © 2024, Pierre ROYER - [Link] 14 / 35
- 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 © 2024, Pierre ROYER - [Link] 15 / 35


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 © 2024, Pierre ROYER - [Link] 16 / 35


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 9.2
Minimal.

A. Procédure

Paramétrer une IP fixe et une passerelle : /etc/sysconfig/network-


scripts/ifcfg-ens33
Faire correspondre le nom et l’adresse de l’interface réseau : /etc/hosts
Déclarer les DNS : /etc/[Link]
Nommer le serveur :

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

Prévoir un espace de stockage suffisant (au moins 10 Go) sur le point de montage dédié
/var/lib/docker/
Les conteneurs seront stockés à cet endroit.

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)

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

Copyright © 2024, Pierre ROYER - [Link] 17 / 35


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

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

alias dim='docker images'


alias dex='docker exec -ti'
Copyright © 2024, Pierre ROYER - [Link] 18 / 35
alias dps='docker ps -a'
alias drm='docker rm'
alias drmi='docker rmi'
alias dsta='docker start'
alias dsto='docker stop'
alias dkl='docker kill'
alias dcps='docker-compose ps'
alias dsdf='docker system df -v'
alias dvol='docker volume ls'
alias dlog='docker logs'
alias dstat='docker stats'
alias dbp='docker builder prune'
etc...

Copyright © 2024, Pierre ROYER - [Link] 19 / 35


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

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

A bientôt…

Copyright © 2024, Pierre ROYER - [Link] 20 / 35


VI. P REMIERS PAS

A. Aperçu des commandes

B. Installation d’un conteneur


1. Récupération de l’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

Copyright © 2024, Pierre ROYER - [Link] 21 / 35


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. Options de conversion

E. Archivage d’une image

F. Gestion des images

G. Utilisation de dépôt

Copyright © 2024, Pierre ROYER - [Link] 22 / 35


VIII. D OCKERFILE

A. Les principales commandes

B. Multi Staged Builds

C. Git

D. supervisord

E. Exercice

Copyright © 2024, Pierre ROYER - [Link] 23 / 35


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 © 2024, Pierre ROYER - [Link] 24 / 35


X. DOCKER - COMPOSE

Docker Compose est un outil pour définir et exécuter des applications Docker multi-
conteneurs interdépendants. Il utilise :

- La définition de l’environnement via un Dockerfile


- La définition des services contenus dans un fichier « [Link] »
- La commande « docker-compose up » pour démarrer l’environnement isolé

A. [Link]

B. docker-compose + Dockerfile

C. Arrêt et désinstallation

Copyright © 2024, Pierre ROYER - [Link] 25 / 35


XI. L ES OUTILS D ’ ADMINITRATION
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. ctop

D. lazydocker

Copyright © 2024, Pierre ROYER - [Link] 26 / 35


XII. H EALTHCHECK

La directive HEALTHCHECK permet le contrôle des services dans le conteur. L’état de


santé ce dernier peut ensuite être interprété pas des outils de contrôles (ctop…), de
supervision (Zabbix…), d’administration (Portainer…) ou des orchestrateurs
(Kubernetes…).

A. Ligne de commande

B. Dockerfile

C. Docker-compose

Copyright © 2024, Pierre ROYER - [Link] 27 / 35


XIII. L ES VARIABLES ARG, ENV ET LES
SECRETS

A. ARG

1. Dockerfile

2. docker-compose

A. ENV

1. Dockerfile & Entry point

2. Les fichiers d’environnements

B. Les secrets

Copyright © 2024, Pierre ROYER - [Link] 28 / 35


XIV. 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. Création à la volée

5. Réseau overlay

Utilisé pour interconnecter des nœuds (swarm nodes). De moins en moins utilisé car
l’orchestrateur swarm est remplacé par d’autres orchestrateurs (Kubernetes, Rancher,
Apache Mesos…)

6. Réseau none

B. IP fixes

1. Dans un réseau existant

2. Dans un nouveau réseau

Copyright © 2024, Pierre ROYER - [Link] 29 / 35


XV. L ES FORMATS

Copyright © 2024, Pierre ROYER - [Link] 30 / 35


XVI. S ECURITE

A. Namespace

1. Principes

2. Exemples

B. Cgroups

1. Ressources en mémoire vive

2. Ressources processeur

3. Docker-compose

C. Linux capabilities

1. Les privilèges

2. Le mode privilégié

D. Audit

Copyright © 2024, Pierre ROYER - [Link] 31 / 35


E. Front-end

1. Solutions

2. Entêtes HTTP

3. Fail2ban

Copyright © 2024, Pierre ROYER - [Link] 32 / 35


XVII. D OCKER MACHINE
Docker-machine est un outil qui permet de provisionner des machines physiques ou
virtuelles, afin d’héberger des conteneurs. Ces machines auront les rôles de « Manager »
et « Worker ».

F. Création d’un cluster VirtualBox

1. Installer Virtualbox

2. Création de 3 machines

Copyright © 2024, Pierre ROYER - [Link] 33 / 35


XVIII. S WARM

A. Vue d’ensemble

B. Briques techniques

C. Réseau virtuel et sécurité

D. Mise en oeuvre

Copyright © 2024, Pierre ROYER - [Link] 34 / 35


XIX. S UPERVISION

A. Commandes

B. Sécurité

C. Outils GUI

XX. R ESSOURCES

XXI. A NNEXE

Copyright © 2024, Pierre ROYER - [Link] 35 / 35

Vous aimerez peut-être aussi