0% ont trouvé ce document utile (0 vote)
87 vues47 pages

Guide Docker pour Développeurs et Admins

Transféré par

Zahzah Omar
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

Thèmes abordés

  • Inspection de réseau,
  • Persistance des données,
  • Tests,
  • Environnement de développement,
  • Écosystème Docker,
  • Docker,
  • Sécurité,
  • Commandes réseau,
  • Hyperviseur,
  • Commandes de base
0% ont trouvé ce document utile (0 vote)
87 vues47 pages

Guide Docker pour Développeurs et Admins

Transféré par

Zahzah Omar
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

Thèmes abordés

  • Inspection de réseau,
  • Persistance des données,
  • Tests,
  • Environnement de développement,
  • Écosystème Docker,
  • Docker,
  • Sécurité,
  • Commandes réseau,
  • Hyperviseur,
  • Commandes de base

UTILISATION DES

CONTAINERS : DOCKER
PLAN

• Introduction
• Installation
• Manipulation des images
• Manipulation des containers
• Création de nouvelles images (Dockerfile)
• Les "Volumes" dans docker
• Gestion des containers : docker compose
• Manipulation des réseaux
• Conclusion et perspectives : Podman & Kubernetes

2
INTRODUCTION

• Docker : Lancé en 2013 pour les développeurs et administrateurs systèmes


• Déployer et exécuter une application avec toutes ses dépendances d’une manière isolée
• Peut être exécuté sur toute autre machine et système d’exploitation

• Différence avec la virtualisation classique


• Hyperviseur : L’accès aux ressources d’une manière virtuelle diminue les performances
(passage par la couche d’abstraction matérielle)
• La couche OS consomme énormément de ressources
• => Utilisation de la conteneurisation

3
INTRODUCTION (SUITE)

• Isolation
• Virtualisation classique : Isolation assurée par l’hyperviseur
• Container : Isolation assurée par le système d’exploitation
• Partage du noyau entre les conteneurs
• Utilisation des ressources uniquement par l’application
• => Plus léger

• Mécanismes d’isolation
• namespaces : ce qu'un processus peut voir
• cgroups : ce qu’un processus peut utiliser en terme de ressources
• => Processus isolé s’exécutant sur un OS Linux

4
²

Virtualisation Utilisation des conteneurs :


classique Docker
5
DOCKER : INSTALLATION

• Désinstallation des anciennes versions


• sudo apt-get remove docker docker-engine docker.io containerd runc
• Ajout des sources des packages docker :
• sudo apt-get update
• sudo apt-get install apt-transport-https ca-certificates curl gnupg
• curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o
/usr/share/keyrings/docker-archive-keyring.gpg
• echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-
keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

6
DOCKER : INSTALLATION (SUITE)

• Installation de docker-ce (community edition)


• sudo apt-get update
• sudo apt-get install docker-ce docker-ce-cli containerd.io
• Test de l’installation de docker
• sudo docker run hello-world
• Méthode alternative : Installation en utilisant un script
• curl -fsSL https://get.docker.com -o get-docker.sh
• sh ./get-docker.sh
• Pour ne plus utliser « sudo »
• sudo groupadd docker
• sudo usermod -aG docker $USER

7
DOCKER : MANIPULATION DES IMAGES

• Image
• Inclut ce qui est nécessaire à l'exécution d’une application
• Le code/L'exécution
• Les variables d'environnement
• Les bibliothèques
• Les fichiers de configuration
• Créée à partir d’un fichier Dockerfile

• Conteneur : Image en cours d’exécution, après son instanciation

8
DOCKER : MANIPULATION DES IMAGES
(SUITE)
• Récupération de la liste des commandes disponibles (auto-complétions possible):
• docker help
• docker <Commande> help
• Tabulation après la commande permet de lister les options disponibles
• docker info

• Lister les images disponibles


• docker image ls
• docker images

• Supprimer des images


• docker rmi <ID> (identificateur de l’image)
• docker rmi hello-world (nom de l’image)
• docker rmi -f hello-world (-f pour forcer la suppression de l’image)
• docker rmi -f $(docker images -q) (pour supprimer toutes les images)

9
DOCKER : MANIPULATION DES IMAGES
(SUITE)
• Registry publique : https://hub.docker.com
• Registre officiel de docker
• Permet de stocker et distribuer des images docker
• Certaines images sont « à risque », images officielles à préférer
• Une image hébergée peut avoir plusieurs variantes : TAGS
• Des utilisateurs peuvent laisser des avis sur une image : REVIEWS

• Commandes de base
• docker search ubuntu chercher les images dont le nom contient ubuntu
• docker search --filter "is-official=true" ubuntu chercher les images officielles
• docker pull ubuntu télécharger l’image dont le nom est ubuntu tag latest
• docker pull ubuntu:16.04 image ubuntu avec tag 16.04

10
DOCKER : MANIPULATION DES
CONTAINERS
• Conteneur : instance en cours d’exécution d’une image
• docker run [OPTIONS] <IMAGE_NAME ou ID>
• Lance le container puis revient au système hôte
• docker pull ubuntu:latest
• docker run ubuntu:latest
• docker run –help

• Quelques options courantes


• -t : Allouer un pseudo TTY (terminal virtuel)
• -i : Garder un STDIN ouvert (l'entrée standard (clavier) )
• -d : Exécuter le conteneur en arrière-plan et afficher son ID
• docker run -ti ubuntu:latest : lance le container et donne accès à son terminal
• Ctrl + P + Q pour quitter sans arrêter le container
• exit pour quitter en arrêtant le container (docker start nomcontainer pour le relancer)

11
DOCKER : MANIPULATION DES
CONTAINERS (SUITE)
• Les containers sont éphémères : les modifications ne sont pas gardées
• Les modifications faites dans un container sont perdues si ce dernier est relancé (installations
de packages, modifications de fichiers, …)
• apt-get update -y && apt-get install -y nano
• nano --version (rm -rf /* puis ls (il faut être sûrs que vous êtes dans le container)
• exit pour quitter le container (puis relancer avec docker start)
• Le container se relance, la commande nano ne s’exécute plus, ls s’exécute normalement
• => Les modifications ont été « perdues »

• Pour avoir des données persistantes


• Créer de nouvelles images
• Créer des volumes

12
DOCKER : SERVICES DANS LES
CONTAINERS
• Quelques options courantes (suite)
• --name : Attribuer un nom au conteneur
• --expose : Exposer un port ou une plage de ports (on demande au firewall du conteneur de nous ouvrir un port ou
une plage de port)
• Dans les images destinées à héberger des services, les ports sont généralement déjà exposés
• -p ou --publish : Mapper un port déjà exposé (redirection de port)

• Exemple : Image apache : docker pull httpd:latest


• docker run --name ServeurWeb -p 8080:80 httpd:latest
• Se connecter sur http://<adresseIP>:8080
• La commande ne rend pas la main au terminal (logs Apache)
• => docker run --name ServeurWeb -d -p 8080:80 httpd:latest
• docker stop ServeurWeb : pour arrêter le container
• docker rm ServeurWeb : pour supprimer le container

13
DOCKER : SERVICES DANS LES
CONTAINERS
• Afficher la liste des container
• docker container ls
• docker ps
• Affiche uniquement les containers en cours d’exécution (état running)
• => -a ou --all : Option qui affiche tout les containers (tout les états)

• Lancer un terminal dans un container déjà en cours d’exécution


• docker exec -ti ServeurWeb /bin/bash
• Modifications dans le container
• echo "<h1>Docker est facile</h1>" > /usr/local/apache2/htdocs/index.html
• Vérification du résultat dans la page Web http://<adresseIP>:8080

• Suivi des journaux docker (docker logs)


• -f : suivre en permanence les logs du conteneur (correspond à tail -f)
• -t : afficher la date et l'heure de réception des logs d'un conteneur
• docker logs -ft ServeurWeb (Ctrl +C pour quitter)

14
DOCKER : CRÉATION DE NOUVELLES
IMAGES
• Transformer les containers en images
• Pour sauvegarder les modifications majeures (mises à jour, ajout de commandes, …)
• Pour les modifications courantes, il faut utiliser les volumes
• docker run -ti --name monUbuntu ubuntu:latest
• apt-get update && apt-get upgrade (puis Ctrl + P + Q pour quitter)
• docker commit monUbuntu nouvubuntu
• Création d’une nouvelle image à base du container monUbuntu
• docker images : pour vérifier l’ajout de la nouvelle image
• docker run -ti --name nouvubuntu_container nouvubuntu

15
DOCKERFILE : CRÉER VOS PROPRES
IMAGES DOCKER
• Image = modèle composé de plusieurs couches
• Application
• Bibliothèque
• OS, …

• Exemple : création d’un stack LAMP


• Couche OS
• Couche Apache (serveur Web)
• Couche PHP (interpréteur et bibliothèques)
• Couche MySQL (serveur SGBD)
16
DOCKERFILE : CRÉER VOS PROPRES
IMAGES DOCKER (SUITE)
• Instructions Dockerfile
• FROM : Définit l'image de base qui sera utilisée
• LABEL : Ajoute des métadonnées à l'image avec un système de clés-valeurs, permet par exemple
d'indiquer à l'utilisateur l'auteur du Dockerfile.
• ARG : Variables temporaires qu'on peut utiliser dans un Dockerfile.
• ENV : Variables d'environnements utilisables dans votre Dockerfile et conteneur.
• RUN : Exécute des commandes Linux ou Windows lors de la création de l'image. Chaque instruction RUN va
créer une couche en cache qui sera réutilisée dans le cas de modification ultérieure du Dockerfile.
• COPY : Permet de copier des fichiers depuis notre machine locale vers le conteneur Docker.
• ADD : Même chose que COPY mais prend en charge des liens ou des archives (si le format est reconnu,
alors il sera décompressé à la volée).
• ENTRYPOINT : Point d'entrée du conteneur, c'est la commande qui sera toujours exécutée au démarrage
du conteneur. Il prend la forme de tableau JSON (ex : CMD ["cmd1","cmd1"]) ou de texte.

17
DOCKERFILE : CRÉER VOS PROPRES
IMAGES DOCKER (SUITE)
• Instructions Dockerfile (Suite)
• CMD : Spécifie les arguments qui seront envoyés au ENTRYPOINT , (on peut aussi l'utiliser pour
lancer des commandes par défaut lors du démarrage d'un conteneur). Si il est utilisé pour
fournir des arguments par défaut pour l'instruction ENTRYPOINT , alors les instructions CMD et
ENTRYPOINT doivent être spécifiées au format de tableau JSON.
• WORKDIR : Définit le répertoire de travail qui sera utilisé pour le lancement des commandes
CMD et/ou ENTRYPOINT et ça sera aussi le dossier courant lors du démarrage du conteneur.
• EXPOSE : Expose un port.
• VOLUMES : Crée un point de montage qui permettra de persister les données.
• USER : Désigne quel est l'utilisateur qui lancera les prochaines instructions RUN , CMD ou
ENTRYPOINT (par défaut c'est l'utilisateur root).

18
DOCKERFILE : CRÉER VOS PROPRES
IMAGES DOCKER (SUITE)
• Créer un répertoire pour y placer les fichiers de l’application
• mkdir mon_lamp && cd mon_lamp
• Télécharger les fichiers de l’application
• wget https://devopssec.fr/documents/docker/dockerfile/sources.zip
• Décompressez ces fichiers
• unzip sources.zip
• Créer le fichier Dockerfile
• nano Dockerfile

19
DOCKERFILE : CRÉER VOS PROPRES
IMAGES DOCKER (SUITE)
# --------------- DÉBUT COUCHE OS -------------------
FROM debian:stable-slim
# --------------- FIN COUCHE OS ---------------------
# MÉTADONNÉES DE L'IMAGE
LABEL version="1.0" maintainer="AJDAINI Hatim <[email protected]>"
# VARIABLES TEMPORAIRES
ARG APT_FLAGS="-q -y"
ARG DOCUMENTROOT="/var/www/html"
# --------------- DÉBUT COUCHE APACHE ---------------
RUN apt-get update -y && \
apt-get install ${APT_FLAGS} apache2
# --------------- FIN COUCHE APACHE -----------------
# --------------- DÉBUT COUCHE MYSQL ----------------
RUN apt-get install ${APT_FLAGS} mariadb-server
COPY db/articles.sql / 20
# --------------- FIN COUCHE MYSQL ------------------
DOCKERFILE : CRÉER VOS PROPRES
IMAGES DOCKER (SUITE)
# --------------- DÉBUT COUCHE PHP ------------------
RUN apt-get install ${APT_FLAGS} \
php-mysql \
php && \
rm -f ${DOCUMENTROOT}/index.html && \
apt-get autoclean -y
COPY app ${DOCUMENTROOT}
# --------------- FIN COUCHE PHP --------------------
# OUVERTURE DU PORT HTTP
EXPOSE 80
# RÉPERTOIRE DE TRAVAIL
WORKDIR ${DOCUMENTROOT}
# DÉMARRAGE DES SERVICES LORS DE L'EXÉCUTION DE L'IMAGE
ENTRYPOINT service mariadb start && mysql < /articles.sql && apache2ctl -D
FOREGROUND 21
DOCKERFILE : CRÉER VOS PROPRES
IMAGES DOCKER (SUITE)
• Exécuter la commande de construction de l’image
• docker build -t my_lamp .

• Créer le container et tester l’application


• docker run -d --name my_lamp_c -p 8080:80 my_lamp

• Créer un compte sur docker hub, puis créer un repository


• Se connecter au compte depuis la console
• docker login

• Créer un nouveau tag pour l’upload


• docker tag <IMAGENAME OU ID> <HUB-USER>/<REPONAME>[:<TAG>]
• docker tag my_lamp massc/lamp:first

• Upload de l’image vers docker hub


• docker push <HUB-USER>/<REPONAME>[:<TAG>]
• docker push massc/lamp:first

22
LES VOLUMES DANS DOCKER (1)

• Volume : système de fichier qui existe sur système hôte


• Assure la persistance des données
• N’augmente pas la taille de l’image
• Création du volume
• docker volume create <VOLUMENAME>
• docker volume create volume-assc
• Afficher la liste des volumes créés
• docker volume ls
• Afficher des informations sur le volume
• docker volume inspect volume-assc

23
LES VOLUMES DANS DOCKER (2)

• Supprimer le volume
• docker volume rm volume-assc
• Démarrer un conteneur avec un volume
• Utiliser l’option -v
• Exple :
• nano Dockerfile
• FROM alpine:latest
• RUN mkdir /data
• WORKDIR /data
• docker build -t valpine .
• docker run -ti --name valpine_c -v volume-assc:/data valpine
• docker volume inspect volume-assc

24
LES VOLUMES DANS DOCKER (3)

• Surveiller en temps réel le contenu du repertoire du volume


• sudo watch -n 1 ls /var/lib/docker/volumes/volume-assc/_data

• Dans le container, créer un nouveau fichier dans le repertoire /data


• echo "ceci est un test" > test.txt

• Quitter le container (exit) et le supprimer


• docker rm -f valpine_c

• Relancer le container et vérifier le répertoire /data


• docker run -ti --name valpine_c -v volume-assc:/data valpine
• cat test.txt

• Optimisation de l’application lamp


• docker volume create --name mysqldata
• docker run -d --name my_lamp_c -v $PWD/app:/var/www/html -v mysqldata:/var/lib/mysql -p 8080:80

25
GESTION DES CONTENEURS :
DOCKER COMPOSE
• Défini le comportement des conteneur
• Lance des applications à conteneurs multiples
• Configuration à partir d’un fichier YAML
• Le lancement de l’application se fait à partir d’une seule commande
• https://github.com/docker/compose/releases/
• wget https://github.com/docker/compose/releases/download/v2.1.1/docker-compose-
linux-x86_64
• chmod +x docker-compose-linux-x86_64
• sudo mv docker-compose-linux-x86_64 /usr/bin/docker-compose

26
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
• On va modifier le précédent stack LAMP
• wget ftp://10.20.0.10/docker/sources.zip
• unzip sources.zip && cd sources
• Nous exploiterons une image contenant apache et php
• nano Dockerfile
• FROM php:7-apache
• LABEL version="1.0" maintainer="ASSC"
• # Activation des modules php
• RUN docker-php-ext-install pdo pdo_mysql
• WORKDIR /var/www/html
• docker build -t myapp .

27
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
• Nous allons utiliser une image officielle de mysql pour la base de données
• https://hub.docker.com/_/mysql
• Variables d’environnement et informations dans la description :
• MYSQL_ROOT_PASSWORD : Mot de passe à utiliser pour le compte root (variable
obligatoire)
• MYSQL_DATABASE : Base de données à créer au lancement de l'image
• MYSQL_USER et MYSQL_PASSWORD : compte qui aura tout les droits sur la base créée
• Exécution automatique des fichiers .sh, .sql et .sql.gz dans le répertoire /docker-
entrypoint-initdb.d
• => on va déposer le fichier articles.sql dans ce répertoire
28
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
• Le conteneur Web doit pouvoir communiquer avec le conteneur BD
• Un volume doit être créé pour stocker les fichiers Web
• Dans la description https://hub.docker.com/_/php
• Activation des modules pdo et pdo_mysql avec docker-php-ext-install

• Options supplémentaires de docker run


• -e : Définit des variables d’envirennement
• --link : ajoute une référence à un autre conteneur pour permettre la communication

• Après la création d’un volume nommé db-volume :

29
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
docker run -d -e MYSQL_ROOT_PASSWORD='test' \
-e MYSQL_DATABASE='test' \
-e MYSQL_USER='test' \
-e MYSQL_PASSWORD='test' \
--volume db-volume:/var/lib/mysql \
--volume $PWD/db/articles.sql:/docker-entrypoint-initdb.d/articles.sql \
--name mysql_c mysql:5.7

docker run -d --volume $PWD/app:/var/www/html -p 8080:80 --link mysql_c --name myapp_c myapp

30
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
• Commandes trop longues
• À exécuter à chaque nouveau lancement
• Les deux conteneurs sont à gérer séparément
• => Centralisation de la gestion de multiples conteneurs
• Fichier docker-compose.yml

• On va y définir :
• Les services
• Les volumes
• Les relations entre conteneurs

• nano docker-compose.yml

31
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
version: '3.7'

services:

db:

image: mysql:5.7

container_name: mysql_c

restart: always

volumes:

- db-volume:/var/lib/mysql

- ./articles.sql:/docker-entrypoint-initdb.d/articles.sql

environment:

MYSQL_ROOT_PASSWORD: test

MYSQL_DATABASE: test

MYSQL_USER: test

MYSQL_PASSWORD: test

32
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
app:

image: myapp

container_name: myapp_c

restart: always

volumes:

- ./app:/var/www/html

ports:

- 8080:80

depends_on:

- db

volumes:

db-volume:

33
GESTION DES CONTENEURS :
DOCKER COMPOSE (SUITE)
• docker-compose up –d
• Pour lancer le fichier docker-compose

• docker ps (ou docker container ls)


• docker-compose ps
• Pour lister uniquement les containers du fichier docker-compose

• docker-compose logs
• Vérifier les logs des services docker compose

• docker-compose kill
• Forcer l’arrêt des containers

• docker-compose rm
• Supprimer les containers arrêtés

34
MANIPULATION DU RÉSEAU DANS DOCKER

• Communication entre les conteneurs ainsi qu’avec l’extérieur


• Plus d’isolation des conteneurs => Plus de sécurité
• Plusieurs types de réseaux Docker : Driver
• Bridge
• none
• Host
• Overlay
• Macvlan

35
MANIPULATION DU RÉSEAU DANS DOCKER
DRIVER BRIDGE
• Créé lors de l’installation de docker
• Connecté à l’interface virtuelle docker0
• ifconfig docker0 (ip addr show docker0)

• Les conteneurs sont automatiquement connectés à ce bridge


• Sauf si un autre réseau est spécifié

• Le plus couramment utilisé


• Limité aux conteneurs tournant sur le même hôte
• Non accessibles directement depuis l’extérieur
• Nécessité de mappage des ports

36
37
MANIPULATION DU RÉSEAU DANS DOCKER
DRIVER NONE
• Le container est dépourvu de réseau
• Uniquement l’interface loopback est disponible

• Toute communication est impossible


• Utilisé si le container n’a pas besoin de communication réseau

38
MANIPULATION DU RÉSEAU DANS DOCKER
DRIVER HOST
• Les containeurs utilisent les interfaces réseaux de l’hôte
• Pas d’isolation réseau entre les containers
• Containers par défaut accessibles depuis l’extérieur (adresse IP de l’hôte)

• Uniquement l’interface loopback est disponible


• Toute communication est impossible
• Utilisé si le container n’a pas besoin de communication réseau
• docker run -it --rm --network host --name net alpine
• ifconfig ens33 (ip add show ens33)
• Nous obtienons les mêmes informations que sur l’hôte

39
40
MANIPULATION DU RÉSEAU DANS DOCKER
DRIVER OVERLAY
• Utilisé pour une mise en réseau multi-hôtes
• Réseau distribué entre plusieurs hôtes utilisant docker
• Gestion transparent du routage vers et depuis le bon hôte et le bon conteneur

41
42
MANIPULATION DU RÉSEAU DANS DOCKER
DRIVER MACVLAN
• Approprié pour les applications qui veulent un accès direct au réseau
• Adapté dans un réseau utilisant les VLANs
• Attribution d’une adresse MAC au conteneur
• Routage du trafic en fonction de l’adresse MAC

43
44
MANIPULATION DU RÉSEAU DANS DOCKER
LES COMMANDES
• docker network create --driver <DRIVER TYPE> <NETWORK NAME>
• Création d’un reseau docker

• docker network create --driver bridge mon-bridge


• Exemple de creation d’un nouveau reseau de type bridge

• docker network ls
• Affichage de la liste des réseaux docker

• docker network inspect mon-bridge


• Récupérer des informations sur le réseau mon-bridge

• docker network create --driver bridge --subnet=10.1.10.0/24 --gateway=10.1.10.1 monbridge


• Personnalisation du sous-reseau et de la passerelle du bridge

45
MANIPULATION DU RÉSEAU DANS DOCKER
LES COMMANDES (SUITE)
• docker run -dit --name alpine1 --network monbridge alpine
• docker run -dit --name alpine2 --network monbridge alpine
• Lancement de deux conteneurs sur le même bridge

• docker network inspect monbridge


• Deux nouveaux conteneurs utilisent ce bridge

• docker exec alpine1 ping -c 1 10.1.10.3


• ping depuis alpine1 vers alpine2

• On ne peut pas créer un réseau de type host, mais on peut utilizer l’existant
• Uniquement une seule instance de ce reseaux peut exister

46
MANIPULATION DU RÉSEAU DANS DOCKER
LES COMMANDES (SUITE)
• docker run --rm -d --network host --name my_httpd httpd
• Le port 80 doit être libre sur l’hôte
• Le processus Apache du container reste isolé de la machine hôte

• sudo netstat -tulpn | grep :80


• Apache du container utilise le port 80 sans avoir recours au mappage

• docker network disconnect monbridge alpine1


• docker network disconnect monbridge alpine2
• Avant de supprimer le réseau monbridge, il faut déconnecter ses container (ou les supprimer)

• docker exec alpine1 ifconfig


• docker network rm monbridge
• docker network connect bridge alpine1 && docker network connect bridge alpine2

47

Vous aimerez peut-être aussi