Déployer vos applications
avec Docker
1
NetDevOps
NANFACK Steve
[Link]@[Link]
[Link]
2
Plan
Architecture Docker
C’est quoi Docker ? Installation
3
1 5
2 6
4
Pourquoi Docker ? Demos
Quelques commandes
du Docker CLI
3
C’est quoi Docker ?
Docker est un moteur open source qui automatise le
déploiement de n'importe quelle application de
façon légère, portable et autonome qui fonctionnera
pratiquement n'importe où.
4
Pourquoi Docker ?
◇ L’isolation des processus
◇ Légèreté et rapidité .vs Machines Virtuelles
◇ Simplicité
◇ Interopérabilité (GitHub, GNS3, Ansible)
◇ Micros services
5
1 Architecture Docker
Docker Platform = Docker Engine + Docker Hub
Moteur (Docker Engine)
Docker Engine = Docker Daemon + Docker CLI
Le démon docker (Docker Daemon) est le service qui
s'exécute sur l'hôte docker et gère les commandes
docker que le client lance/exécute (Docker CLI).
Il est chargé de :
◇ Exécuter et gérer les conteneurs
◇ Construire les images
◇ Gere la communication Docker Hub/Docker CLI
7
Moteur (Docker Engine)
Docker Engine = Docker Daemon + Docker CLI
Le Docker CLI (Command-Line Interface) est un outil en
ligne de commande qui permet aux utilisateurs d'interagir
avec le service Docker.
Il fournit une interface pour :
◇ Le CRUD des images
◇ Le CRUD des conteneurs et leur déploiement
◇ La configuration du réseau et du stockage des conteneurs
8
Quelques commandes utiles
◇ docker run # créer un conteneur à partir d’une image
◇ docker ps # lister les conteneurs en cours (-a incl. stoppés)
◇ docker top # lister les processus actif dans le conteneur
◇ docker images # lister toutes les images présente sur l'hôte
◇ docker rmi # supprimer une image de l'hôte
◇ docker build # créer une image à partir du Dockerfile
◇ docker pull # créer une image à partir du Docker Hub
◇ docker commit # créer une image à partir d’un conteneur
9
Docker Hub
C’est un registre centralisé pour les images Docker.
Il permet aux utilisateurs de :
❏ Stocker leurs images docker
❏ Partager leurs images
❏ Télécharger des images prêt à l’emploi (Ubuntu,
Ngnix, MySQL, Apache2, Redis, Prometheus, etc)
Docker search #Rechercher des images dans le Hub.
docker search nanfacksteve
docker search MySQL
10
Architecture Docker (Composants)
11
2 Installation de Docker
[Link]
Installation
● Sudo apt-get update
● Sudo apt-get install ca-certificates curl gnupg
● sudo mkdir -m 0755 -p /etc/apt/keyrings
● curl -fsSL [Link] | sudo gpg --dearmor -o
/etc/apt/keyrings/[Link]
● echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/[Link]] \
[Link] "$(. /etc/os-release && echo
"$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/[Link].d/[Link] > /dev/null
● sudo apt-get update
● sudo apt-get install docker-ce docker-ce-cli [Link] docker-buildx-plugin
docker-compose-plugin
13
Pratiquons
3 Demo
“La théorie est importante, mais ne vaut rien si
elle n’est pas mise en pratique.” - Aton Chekhov
Conteneurs
❏ Lancer un conteneur
❏ Sortir sans arreter
❏ Rentrer dans un conteneur actif
❏ Inspecter son conteneur
15
Conteneur (Creat. + Inspect.)
Création
# Lance un conteneur nommé ubuntu de l’image ubuntu:22.04
docker run --rm -it --name my-ubuntu -h ubuntu ubuntu:22.04
Sortie + Récupération
# Ctrl + P suivi de Ctrl + Q pour sortir sans interruption
# Pour rentrer à nouveau dans son conteneur faire
docker exec -it my-ubuntu bash
Inspection
docker inspect my-ubuntu --format {{.[Link]}}
16
Dockerfile
Objectif : créer des images automatiquement à l'aide
d'un script de construction qui peut être versionné.
❏ Créer une image apache-test
❏ Accéder à une page web
depuis le Host
17
Workflow (Dockerfile)
18
Dockerfile
FROM ubuntu:22.04
RUN apt update && \
apt install apache2 apache2-utils -y
WORKDIR /var/www/html/
# Copie de “[Link]” dans “/var/www/html/”
COPY [Link] .
# Port d’ecoute
EXPOSE 80
CMD [“/usr/sbin/apache2ctl”, “-D”, “FOREGROUND”]
Execution
● docker build -t apache-test .
● id=$(docker run -it --name web-server -p 8080:80 -d apache-test)
● ip=$(docker inspect $id --format {{.[Link]}})
● curl [Link] ou curl $ip
19
Volumes
Objectif : rendre les données ou les changements
persistants
Montage des Volumes Hôtes
Partage des volumes
20
Volumes Docker
Volume Hote
# Map/Lie le répertoire ~/host de l'hôte avec celui de /opt du conteneur
docker run --rm -it --name test-volume-1 --hostname dev1 \
–volume ~/host:/opt debian
Partage de Volume
# Partage le volume du conteneur ‘test-volume-1’ avec ‘test-volume-2’
docker run --rm -it --name test-volume-2 -h dev2 \
--volumes-from test-volume-1 debian
21
Sauvegarde & Restauration
Enregistrer une image dans un
*.[Link]
Charger une image à partir d’un
*.[Link]
22
Sauvegarde + Restauration
Sauvegarde
# Enregistre l’image “apache-test” dans le “home” de “sun”
docker save apache-test -o /home/sun/image_apache2.[Link]
Restauration
# Restaure l’image “apache-test” à partir du fichier *.[Link]
docker load -i /home/sun/image_apache2.[Link]
23
Merci !
Des questions?
Vous pouvez me joindre sur :
◇ [Link]
◇ [Link]
24
Bibliographie
◇ [Link]
t-en-creant-des-conteneurs-avec-docker
◇ [Link]
◇ [Link]
25