Aller au contenu

Maütriser Docker 🐳 : conteneurs, images et bonnes pratiques

Mise Ă  jour :

logo docker

Docker est devenu un outil incontournable pour simplifier le dĂ©ploiement d’applications. Cette formation va me permettre de vous accompagner dans la prise en main de Docker, en me concentrant sur son utilisation pratique pour la gestion des conteneurs. Vous dĂ©couvrirez comment Docker peut vous aider Ă  isoler vos applications et Ă  les exĂ©cuter de maniĂšre indĂ©pendante, quel que soit l’environnement sous-jacent.

C’est quoi Docker ?

Docker est une plateforme open source qui simplifie le dĂ©ploiement et la gestion d’applications en utilisant des conteneurs.

ConcrĂštement, un conteneur est une unitĂ© lĂ©gĂšre et portable qui regroupe tout ce dont une application a besoin pour fonctionner : le code, les bibliothĂšques et les dĂ©pendances. GrĂące Ă  Docker, ces conteneurs peuvent s’exĂ©cuter de maniĂšre isolĂ©e, quel que soit l’environnement sous-jacent, que ce soit sur votre ordinateur, un serveur ou dans le cloud.

L’avantage principal de Docker est qu’il permet d’éviter les fameux “ça marche chez moi, mais pas ailleurs” en garantissant que votre application tourne de la mĂȘme façon partout. Cela rend vos dĂ©ploiements plus rapides, plus flexibles et plus faciles Ă  gĂ©rer.

L’histoire de Docker

L’histoire de Docker commence en 2010, lorsque Solomon Hykes, un ingĂ©nieur français, commence Ă  travailler sur un projet personnel de virtualisation lĂ©gĂšre. L’idĂ©e Ă©tait de crĂ©er un outil qui simplifierait le processus de dĂ©veloppement, de test et de dĂ©ploiement d’applications en utilisant des conteneurs.

En 2013, Docker a Ă©tĂ© publiĂ© en tant que projet open source, initialement appelĂ© “dotCloud” en rĂ©fĂ©rence Ă  la sociĂ©tĂ© dotCloud fondĂ©e par Solomon Hykes. Docker a rapidement gagnĂ© en popularitĂ© parmi les dĂ©veloppeurs et les administrateurs systĂšme.

En juin 2014, Docker 1.0 a Ă©tĂ© officiellement lancĂ©. C’était un jalon important, marquant la maturitĂ© de la technologie de conteneurisation. Docker est devenu un outil standard pour les dĂ©veloppeurs et les opĂ©rations informatiques.

Concepts fondamentaux de Docker

Avant de se plonger dans l’utilisation pratique de Docker, il est essentiel de bien comprendre ses concepts fondamentaux. Docker repose sur plusieurs notions clĂ©s qui permettent de gĂ©rer efficacement les applications et leurs environnements. Voici une explication des concepts principaux : images, containers, Dockerfile, volumes et rĂ©seaux.

Images Docker

Une image Docker est un package contenant tout ce dont une application a besoin pour fonctionner : le code, les bibliothĂšques, les dĂ©pendances et les configurations systĂšme. Une image est immuable, c’est-Ă -dire qu’elle ne change pas une fois créée. C’est Ă  partir de cette image qu’on va crĂ©er des containers.

Les images sont souvent basĂ©es sur d’autres images. Par exemple, une image de base comme alpine ou ubuntu peut ĂȘtre utilisĂ©e comme point de dĂ©part, Ă  laquelle on ajoute des fichiers et des configurations spĂ©cifiques.

Containers

Un container est une instance en cours d’exĂ©cution d’une image Docker. Il s’agit de l’entitĂ© active qui exĂ©cute une application. Les containers partagent le noyau du systĂšme d’exploitation de l’hĂŽte, ce qui les rend beaucoup plus lĂ©gers que les machines virtuelles. Cependant, chaque container fonctionne dans son propre environnement isolĂ© en s’appuyant sur les namespaces et les cgroups de Linux.

Un container peut ĂȘtre créé, dĂ©marrĂ©, arrĂȘtĂ© et supprimĂ©. Contrairement aux images, un container peut avoir un Ă©tat modifiable (par exemple, des fichiers qui changent ou des donnĂ©es qui sont ajoutĂ©es pendant l’exĂ©cution).

Dockerfile

Le Dockerfile est un fichier texte qui contient une sĂ©rie d’instructions permettant de crĂ©er une image Docker. C’est grĂące Ă  ce fichier que vous allez pouvoir automatiser la crĂ©ation d’une image, en spĂ©cifiant les dĂ©pendances, les fichiers Ă  copier, les commandes Ă  exĂ©cuter, etc. Chaque ligne du Dockerfile correspond Ă  une Ă©tape dans le processus de construction de l’image.

Les couches (Layers)

Un concept fondamental dans Docker est celui des layers (couches). Chaque image Docker est composĂ©e de plusieurs couches empilĂ©es les unes sur les autres. Chaque couche correspond Ă  une instruction dans le Dockerfile (par exemple, RUN, COPY, ADD). Lorsque Docker construit une image, il exĂ©cute chaque instruction du Dockerfile et crĂ©e une nouvelle couche Ă  chaque Ă©tape. Ces couches sont immutables et cachĂ©es, ce qui signifie qu’une fois créées, elles ne changent pas.

L’avantage principal de ce systĂšme est que Docker utilise un mĂ©canisme de mise en cache des couches. Si une couche n’a pas changĂ© depuis la derniĂšre construction, Docker va simplement la rĂ©utiliser au lieu de la reconstruire. Cela accĂ©lĂšre Ă©normĂ©ment la construction des images, en particulier pour les images complexes.

Chaque couche est stockĂ©e comme une diffĂ©rence par rapport Ă  la couche prĂ©cĂ©dente (par exemple, les modifications de fichiers ou les nouveaux fichiers ajoutĂ©s). Le dernier ensemble de couches forme une image complĂšte, qui peut ĂȘtre utilisĂ©e pour exĂ©cuter des containers.

Volumes

Les volumes Docker sont utilisĂ©s pour persister des donnĂ©es en dehors du cycle de vie des containers. En effet, lorsque vous supprimez un container, toutes les donnĂ©es qu’il contenait disparaissent. Les volumes permettent de sauvegarder ces donnĂ©es de maniĂšre permanente, mĂȘme si le container est supprimĂ© et recréé.

Docker permet de monter des volumes, c’est-Ă -dire de connecter une partie du systĂšme de fichiers de l’hĂŽte au container. Cela permet aussi de partager des donnĂ©es entre plusieurs containers.

Réseaux

Docker crĂ©e un rĂ©seau par dĂ©faut appelĂ© bridge, qui permet aux containers de communiquer entre eux. Cependant, vous pouvez crĂ©er et gĂ©rer diffĂ©rents types de rĂ©seaux pour mieux contrĂŽler comment les containers interagissent entre eux et avec l’extĂ©rieur. Docker propose plusieurs types de rĂ©seaux : bridge, host et overlay.

  • Le rĂ©seau bridge est le rĂ©seau par dĂ©faut. Il isole chaque container dans son propre espace rĂ©seau, mais permet la communication avec l’hĂŽte.
  • Le rĂ©seau host permet au container d’utiliser directement l’interface rĂ©seau de l’hĂŽte, sans isolation.
  • Le rĂ©seau overlay est utilisĂ© dans des environnements d’orchestration comme Docker Swarm ou Kubernetes et permet de connecter des containers sur diffĂ©rents hĂŽtes.

Disponibilité de Docker

Docker est disponible sur les plateformes suivantes :

  • Les distributions Linux : Ubuntu, Fedora, RHEL, Centos, Gentoo, ArchLinux, openSUSE, CRUX,

  • Les systĂšmes de cloud : Amazon EC2, Google Compute Engine et Rackspace.
  • Les systĂšmes d’exploitations Mac Os X et Windows. Sous Windows Docker s’appuie sur une mini VM Linux packagĂ©e dans le produit Docker Desktop ↗.

Installation de Docker

L’installation de Docker est la premiĂšre Ă©tape pour commencer Ă  travailler avec des containers. Docker peut ĂȘtre installĂ© sur plusieurs systĂšmes d’exploitation, tels que Linux, Windows et macOS. Dans cette section, je vais vous guider Ă  travers les Ă©tapes pour installer Docker sur chacune de ces plateformes. Nous verrons Ă©galement comment vĂ©rifier que Docker est bien installĂ© et prĂȘt Ă  ĂȘtre utilisĂ©.

Installation de Docker sur Linux (Ubuntu)

Sur Linux, Docker est compatible avec plusieurs distributions, mais ici, je vais me concentrer sur Ubuntu, l’une des distributions les plus populaires. L’installation de Docker sur Ubuntu nĂ©cessite quelques Ă©tapes pour garantir que vous avez la derniĂšre version disponible.

  1. Mettre Ă  jour le systĂšme :

    Avant d’installer Docker, il est recommandĂ© de mettre Ă  jour vos paquets pour s’assurer que le systĂšme est Ă  jour.

    Terminal window
    sudo apt-get update
    sudo apt-get upgrade
  2. Installer les paquets nécessaires :

    Docker nécessite certains paquets comme apt-transport-https, ca-certificates, curl et software-properties-common. Installez-les avec la commande suivante :

    Terminal window
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  3. Ajouter la clé GPG officielle de Docker :

    Cette étape permet de vérifier que les paquets installés proviennent bien des dépÎts officiels de Docker.

    Terminal window
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. Ajouter le dépÎt Docker :

    Ajoutez le dĂ©pĂŽt Docker Ă  vos sources pour vous assurer d’installer la derniĂšre version.

    Terminal window
    echo "deb [arch=$(dpkg --print-architecture) 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
  5. Installer Docker :

    AprÚs avoir ajouté le dépÎt, mettez à jour vos paquets et installez Docker.

    Terminal window
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  6. Permissions utilisateur :

    Par défaut, Docker nécessite des privilÚges super-utilisateur (root). Pour éviter de devoir utiliser sudo à chaque commande, ajoutez votre utilisateur au groupe docker.

    Terminal window
    sudo usermod -aG docker ${USER}

    AprÚs cette commande, déconnectez-vous puis reconnectez-vous pour appliquer les changements.

Installation de Docker sur Windows

Sur Windows, Docker est installĂ© via Docker Desktop, un outil qui permet d’exĂ©cuter Docker de maniĂšre native ou avec une machine virtuelle en arriĂšre-plan. Docker Desktop offre une interface graphique simplifiĂ©e pour gĂ©rer vos containers, mais permet aussi d’utiliser la CLI Docker.

  1. Télécharger Docker Desktop :

    Rendez-vous sur le site officiel de Docker pour tĂ©lĂ©charger Docker Desktop pour Windows : https://www.docker.com/products/docker-desktop ↗.

  2. ExĂ©cuter l’installateur :

    Lancez le fichier tĂ©lĂ©chargĂ© et suivez les instructions de l’assistant d’installation. Assurez-vous d’activer la configuration recommandĂ©e de WSL 2 (Windows Subsystem for Linux) pour une meilleure performance avec Docker.

  3. Redémarrer le systÚme :

    Une fois l’installation terminĂ©e, Docker Desktop vous demandera peut-ĂȘtre de redĂ©marrer votre machine.

  4. Lancer Docker Desktop :

    AprĂšs le redĂ©marrage, lancez Docker Desktop depuis le menu DĂ©marrer. Une fois lancĂ©, vous devriez voir une icĂŽne Docker dans la barre des tĂąches. Si l’icĂŽne est verte, cela signifie que Docker est prĂȘt Ă  ĂȘtre utilisĂ©.

Installation de Docker sur macOS avec Colima

Colima est une alternative lĂ©gĂšre Ă  Docker Desktop sur macOS. Il utilise Lima, un gestionnaire de machines virtuelles et s’intĂšgre avec QEMU pour exĂ©cuter des containers de maniĂšre efficace, sans nĂ©cessiter l’installation de Docker Desktop ni de dĂ©pendances lourdes. Colima est apprĂ©ciĂ© pour sa simplicitĂ©, sa compatibilitĂ© avec Homebrew et son faible impact sur les ressources systĂšme.

Avantages de Colima :

  • LĂ©ger et rapide : Colima consomme moins de ressources systĂšme que Docker Desktop, ce qui le rend idĂ©al pour les machines avec une mĂ©moire ou un CPU limitĂ©s.
  • Facile Ă  installer et Ă  utiliser : Colima s’installe rapidement via Homebrew et ne nĂ©cessite pas de configuration lourde.
  • Open-source et basĂ© sur des outils existants comme Lima et QEMU.
  • CompatibilitĂ© Apple Silicon : Colima fonctionne parfaitement sur les Mac Ă©quipĂ©s de processeurs M1/M2, sans nĂ©cessiter de backend complexe.

Voici comment installer et configurer Docker avec Colima sur macOS.

  1. Installer Homebrew (si ce n’est pas dĂ©jĂ  fait) :

    Homebrew est le gestionnaire de paquets de rĂ©fĂ©rence sur macOS. Si vous ne l’avez pas installĂ©, voici la commande pour l’ajouter Ă  votre systĂšme :

    Terminal window
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    Ensuite, mettez Ă  jour Homebrew :

    Terminal window
    brew update
  2. Installer Docker CLI :

    Docker CLI est l’outil en ligne de commande nĂ©cessaire pour interagir avec les containers. Colima utilise le Docker CLI, mais sans nĂ©cessiter Docker Desktop.

    Terminal window
    brew install docker
  3. Installer Colima :

    Utilisez Homebrew pour installer Colima, qui va gérer les containers via une machine virtuelle légÚre.

    Terminal window
    brew install colima
  4. Démarrer Colima avec Docker :

    Une fois Colima installé, vous pouvez le démarrer avec le support Docker. Colima va créer une machine virtuelle qui exécutera Docker en arriÚre-plan.

    Terminal window
    colima start

    Par défaut, Colima configure un environnement Docker avec 2 processeurs et 2 Go de mémoire. Si vous avez besoin de plus de ressources, vous pouvez spécifier ces options lors du démarrage :

    Terminal window
    colima start --cpu 4 --memory 4
  5. Vérifier que Docker fonctionne avec Colima :

    Vous pouvez maintenant vérifier si Docker fonctionne correctement en exécutant la commande suivante :

    Terminal window
    docker --version

    Puis lancez le container de test hello-world pour vérifier que tout fonctionne correctement.

    Terminal window
    docker run hello-world
  6. Gérer Colima :

    Pour stopper ou redĂ©marrer l’instance Colima (et Docker), utilisez les commandes suivantes :

    • ArrĂȘter Colima (et Docker) :

      Terminal window
      colima stop
    • RedĂ©marrer Colima :

      Terminal window
      colima restart

    Colima est également capable de gérer les volumes persistants, les réseaux et les partages de fichiers de maniÚre similaire à Docker Desktop.

Vérification du bon fonctionnement de Docker

Quelle que soit la plateforme sur laquelle Docker est installĂ©, il est important de vĂ©rifier que tout fonctionne bien. Pour cela, je recommande d’exĂ©cuter un container test en lançant un container simple Ă  partir de l’image hello-world. Cette image est conçue pour tester le bon fonctionnement de Docker.

Terminal window
docker run hello-world

Si Docker est bien installĂ©, vous devriez voir un message confirmant que le container s’est lancĂ© correctement.

Découverte de la CLI Docker

La CLI Docker (interface en ligne de commande) est l’outil principal pour interagir avec Docker. Elle permet de gĂ©rer les containers, les images, les rĂ©seaux et les volumes via des commandes simples. Dans ce chapitre, je vais vous guider Ă  travers les commandes de base de Docker, en vous expliquant comment tĂ©lĂ©charger des images, crĂ©er des containers et gĂ©rer vos applications containĂ©risĂ©es.

Recherche d’images sur Docker Hub

Docker Hub est le registre officiel oĂč les dĂ©veloppeurs et les organisations publient des images Docker prĂȘtes Ă  l’emploi. Vous pouvez y trouver des images de systĂšmes d’exploitation, de bases de donnĂ©es, de serveurs web et bien plus encore. Avant de tĂ©lĂ©charger une image, il est souvent utile de rechercher celle qui correspond Ă  vos besoins. Docker CLI vous permet de rechercher des images directement Ă  partir du terminal.

Pour rechercher une image sur Docker Hub, vous pouvez utiliser la commande docker search. Cette commande renvoie une liste d’images correspondant Ă  votre terme de recherche, avec des informations utiles comme la description et le nombre d’étoiles (stars), qui est un indicateur de la popularitĂ© et de la fiabilitĂ© de l’image.

Exemple : Rechercher une image liée à nginx :

Terminal window
docker search nginx

Vous obtiendrez une sortie ressemblant Ă  ceci :

Terminal window
NAME DESCRIPTION STARS OFFICIAL
nginx Official build of Nginx. 20184 [OK]
nginx/nginx-quic-qns NGINX QUIC interop 1
nginx/nginx-prometheus-exporter NGINX Prometheus Exporter for NGINX and NGIN
 43
nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo
 94
nginx/nginx-ingress-operator NGINX Ingress Operator for NGINX and NGINX P
 2
nginx/unit This repository is retired, use the Docker o
 63
nginx/unit-preview Unit preview features 0
bitnami/nginx Bitnami container image for NGINX 193
rapidfort/nginx RapidFort optimized, hardened image for NGINX 15
kasmweb/nginx An Nginx image based off nginx:alpine and in
 8
ubuntu/nginx Nginx, a high-performance reverse proxy & we
 118
  • NAME : Le nom de l’image.
  • DESCRIPTION : Une brĂšve description de l’image.
  • STARS : Un indicateur de popularitĂ© basĂ© sur les utilisateurs qui ont donnĂ© une â€œĂ©toile” Ă  l’image.
  • OFFICIAL : Le tag [OK] indique que l’image est officielle, c’est-Ă -dire maintenue par les crĂ©ateurs ou les mainteneurs du logiciel.
  • AUTOMATED : Ce tag signifie que l’image a Ă©tĂ© automatiquement gĂ©nĂ©rĂ©e Ă  partir d’un Dockerfile Ă  l’aide d’une intĂ©gration continue (CI).

Il est important de choisir une image bien maintenue, souvent identifiĂ©e par un grand nombre d’étoiles et le tag [OFFICIAL], qui garantit que l’image est fournie par l’organisation officielle derriĂšre la technologie.

Télécharger une image Docker (pull)

La commande docker pull est utilisĂ©e pour tĂ©lĂ©charger une image Docker depuis un registre, principalement Docker Hub ↗. Une image contient tout ce qui est nĂ©cessaire pour exĂ©cuter une application : le code, les bibliothĂšques et les dĂ©pendances. Avant de crĂ©er un container, vous devez d’abord rĂ©cupĂ©rer l’image Ă  partir de laquelle ce container sera créé.

Exemple : Pour tĂ©lĂ©charger l’image officielle de nginx, vous pouvez utiliser la commande suivante :

Terminal window
docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
92c3b3500be6: Pull complete
ee57511b3c68: Extracting [==============================================> ] 36.18MB/38.51MB
33791ce134bf: Download complete
cc4f24efc205: Download complete
3cad04a21c99: Download complete
486c5264d3ad: Download complete
b3fd15a82525: Download complete

Cela tĂ©lĂ©chargera la derniĂšre version de l’image nginx depuis Docker Hub. On remarque le tag : latest. Je vais revenir plus tard sur ce concept.

Lister les images Docker présentes

La commande docker images est essentielle pour gérer les images Docker stockées localement. Elle permet de lister et de consulter ces images ainsi que leurs détails, facilitant ainsi leur gestion.

La syntaxe de la commande est trĂšs simple :

Terminal window
docker images

Lorsque vous exécutez cette commande, Docker renvoie une liste des images disponibles sur votre machine locale. Voici un exemple de sortie typique :

Terminal window
REPOSITORY TAG IMAGE ID CREATED SIZE
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx alpine b887aca7aed6 3 weeks ago 47MB
nginx latest 195245f0c792 3 weeks ago 193MB
erikvl87/languagetool latest 6a077d826d4f 4 months ago 581MB
  • REPOSITORY : Le nom du dĂ©pĂŽt (repository) de l’image. Il s’agit gĂ©nĂ©ralement du nom de l’image (comme nginx), mais cela peut aussi inclure le nom d’un utilisateur ou d’une organisation sur Docker Hub (par exemple, mydockerhub/myapp).
  • TAG : Le tag est une Ă©tiquette qui identifie une version spĂ©cifique de l’image. Par dĂ©faut, Docker utilise le tag latest si aucun autre tag n’est spĂ©cifiĂ©, mais des tags peuvent reprĂ©senter des versions spĂ©cifiques, comme 1.0, alpine, ou v2.3.
  • IMAGE ID : L’ID unique de l’image. Il s’agit d’une chaĂźne alphanumĂ©rique gĂ©nĂ©rĂ©e par Docker lors de la crĂ©ation de l’image. Cet ID peut ĂȘtre utilisĂ© pour rĂ©fĂ©rencer l’image dans d’autres commandes Docker, comme docker rmi (pour supprimer une image) ou docker run (pour crĂ©er un container Ă  partir de cette image).
  • CREATED : La date Ă  laquelle l’image a Ă©tĂ© créée. Cela permet de voir l’anciennetĂ© des images et de dĂ©terminer si elles nĂ©cessitent une mise Ă  jour.
  • SIZE : La taille de l’image sur le disque, indiquĂ©e en Mo (MB). Cette information est importante pour gĂ©rer l’espace disque, surtout si vous manipulez plusieurs images lourdes.

Si vous souhaitez obtenir plus d’informations sur une image en particulier, comme les couches qui la composent, ses variables d’environnement ou ses volumes. Pour cela, vous pouvez utiliser la commande docker inspect.

Exemple : Inspecter l’image nginx :

Terminal window
docker inspect nginx

Cette commande renvoie un ensemble de donnĂ©es au format JSON, vous fournissant des dĂ©tails techniques sur l’image.

Créer une image Docker

La commande docker build est utilisĂ©e pour crĂ©er une image Docker Ă  partir d’un fichier appelĂ© Dockerfile. Le Dockerfile est un script texte qui contient une sĂ©rie d’instructions permettant de dĂ©finir l’environnement dans lequel une application sera exĂ©cutĂ©e. Ces instructions peuvent inclure l’installation de logiciels, la copie de fichiers, la dĂ©finition de variables d’environnement, etc. La commande docker build exĂ©cute ces instructions et produit une image Docker immuable.

La syntaxe de base de la commande docker build est la suivante :

Terminal window
docker build [OPTIONS] PATH
  • PATH : Le chemin vers le rĂ©pertoire contenant le Dockerfile. Si le Dockerfile est dans le rĂ©pertoire courant, vous pouvez utiliser . pour spĂ©cifier ce chemin.
  • OPTIONS : Des options facultatives pour contrĂŽler le processus de construction (par exemple, spĂ©cifier un tag ou optimiser la taille de l’image).

Voici un exemple de Dockerfile simple qui utilise une image de base alpine, copie un fichier dans le container et exécute une commande lors du démarrage :

FROM alpine:3.18.4
RUN apk update && \
apk upgrade
# Installer Nginx
RUN apk add --no-cache nginx
# Exposer le port 80 pour permettre l'accĂšs HTTP
EXPOSE 80
# Démarrer Nginx
CMD ["nginx", "-g", "daemon off;"]

Si vous ne maitrisez pas le gestionnaire de paquets apk, je vous recommande de lire mon guide sur apk pour mieux comprendre son fonctionnement.

Pour construire une image à partir de ce Dockerfile, placez le fichier Dockerfile dans un répertoire et exécutez la commande suivante :

Terminal window
docker build -t myapp:1.0 .
Sending build context to Docker daemon 2.048kB
Step 1/5 : FROM alpine:3.18.4
---> 3cc203321400
Step 2/5 : RUN apk update && apk upgrade
---> Running in b4c966493073
...
Step 3/5 : RUN apk add --no-cache nginx
---> Running in ad860f80fc79
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/community/aarch64/APKINDEX.tar.gz
(1/2) Installing pcre (8.45-r3)
(2/2) Installing nginx (1.24.0-r7)
Executing nginx-1.24.0-r7.pre-install
Executing nginx-1.24.0-r7.post-install
Executing busybox-1.36.1-r7.trigger
OK: 9 MiB in 17 packages
---> Removed intermediate container ad860f80fc79
---> e691a5e3520c
Step 4/5 : EXPOSE 80
---> Running in 5ce84ba92906
---> Removed intermediate container 5ce84ba92906
---> f28a702b100f
Step 5/5 : CMD ["nginx", "-g", "daemon off;"]
---> Running in 8eb7de19291e
---> Removed intermediate container 8eb7de19291e
---> 1b5538b8380d
Successfully built 1b5538b8380d
Successfully tagged myapp:1.0
  • -t myapp:1.0 : Cette option permet de taguer l’image avec un nom (myapp) et un tag de version (1.0).
  • . : Indique que Docker doit chercher le Dockerfile dans le rĂ©pertoire courant.

Une fois la construction terminĂ©e, vous pouvez vĂ©rifier que l’image a Ă©tĂ© correctement construite en listant les images sur votre machine :

Terminal window
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp 1.0 1b5538b8380d 2 minutes ago 20.3MB

Exécuter des containers

La commande docker run est l’une des plus importantes de Docker, car elle permet de crĂ©er et dĂ©marrer un container Ă  partir d’une image Docker. Elle est au cƓur du fonctionnement des containers, car c’est cette commande qui crĂ©e une instance active d’une image. La commande docker run est trĂšs puissante et offre de nombreuses options pour personnaliser l’exĂ©cution des containers.

La syntaxe de base est la suivante :

Terminal window
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • IMAGE : L’image Docker Ă  partir de laquelle le container sera créé (par exemple, nginx, ubuntu:20.04).
  • COMMAND (optionnel) : La commande Ă  exĂ©cuter Ă  l’intĂ©rieur du container une fois dĂ©marrĂ© (par exemple, /bin/bash).
  • ARG
 (optionnel) : Les arguments Ă  passer Ă  la commande si nĂ©cessaire.

Voici quelques-unes des options les plus couramment utilisées avec docker run :

  1. -d : ExĂ©cution en arriĂšre-plan (mode dĂ©tachĂ©) Par dĂ©faut, un container s’exĂ©cute en mode interactif (en premier plan) dans votre terminal. Si vous souhaitez que le container fonctionne en arriĂšre-plan, utilisez l’option -d (dĂ©tachĂ©).

    Terminal window
    docker run -d myapp:1.0

    Avec cette commande, Docker crĂ©e et dĂ©marre un container myapp:1.0 qui s’exĂ©cute en arriĂšre-plan, sans bloquer votre terminal. Vous pouvez ensuite interagir avec ce container via d’autres commandes.

  2. -p : Redirection de ports La redirection de port permet de mapper un port du container à un port de la machine hÎte. Par exemple, si une application dans le container écoute sur le port 80, vous pouvez la rendre accessible via le port 8080 de votre machine hÎte.

    Terminal window
    docker run -d -p 8080:80 myapp:1.0

    Ici :

    • Le port 80 Ă  l’intĂ©rieur du container (port par dĂ©faut de nginx) est mappĂ© au port 8080 de la machine hĂŽte.
    • Vous pouvez maintenant accĂ©der Ă  nginx via http://localhost:8080 sur votre machine hĂŽte.
  3. --name : Nommer un container Par dĂ©faut, Docker attribue un nom alĂ©atoire Ă  chaque container. Pour rendre la gestion des containers plus facile, vous pouvez spĂ©cifier un nom avec l’option --name.

    Terminal window
    docker run -d --name mon_nginx nginx

    Avec cette commande, le container sera nommé mon_nginx, ce qui permet de le gérer plus facilement par la suite (par exemple, avec docker stop mon_nginx ou docker logs mon_nginx).

  4. --rm : Supprimer le container aprĂšs exĂ©cution Si vous voulez qu’un container soit supprimĂ© automatiquement aprĂšs qu’il s’arrĂȘte, utilisez l’option --rm. Cela est particuliĂšrement utile pour les containers temporaires ou les tĂąches ponctuelles.

    Terminal window
    docker run --rm ubuntu echo "Hello, World"

    Dans cet exemple, Docker exĂ©cute l’image ubuntu avec la commande echo. DĂšs que la commande se termine, le container est automatiquement supprimĂ©.

  5. -it : Mode interactif avec terminal L’option -it est utilisĂ©e pour exĂ©cuter un container en mode interactif avec accĂšs Ă  un terminal. Cela est utile lorsque vous voulez exĂ©cuter des commandes dans le container.

    Terminal window
    docker run -it ubuntu /bin/bash

    Dans cet exemple, Docker dĂ©marre un container basĂ© sur l’image ubuntu et ouvre un shell bash interactif dans le terminal. Vous pouvez maintenant exĂ©cuter des commandes comme si vous Ă©tiez connectĂ© directement Ă  une machine Ubuntu.

GĂ©rer les versions d’images

La commande docker tag permet d’ajouter un tag (Ă©tiquette) Ă  une image Docker existante. Les tags sont utilisĂ©s pour identifier diffĂ©rentes versions d’une mĂȘme image ou pour rĂ©fĂ©rencer une image dans un registre Docker (comme Docker Hub). Ils facilitent la gestion des versions d’images et permettent de distinguer les images selon des environnements ou des fonctionnalitĂ©s spĂ©cifiques (ex : v1.0, latest, prod).

La syntaxe de base de la commande docker tag est :

Terminal window
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • SOURCE_IMAGE[:TAG] : L’image source que vous voulez taguer. Vous pouvez inclure le tag de l’image source si elle en a un (par exemple, myapp:1.0).
  • TARGET_IMAGE[:TAG] : Le nouveau tag que vous voulez attribuer Ă  l’image. Cela peut inclure un nouveau nom de dĂ©pĂŽt ou un nouveau tag.

Supposons que vous ayez une image locale appelée myapp avec un tag v1.0. Vous voulez créer un nouveau tag v2.0 pour cette image afin de versionner votre application. Voici comment vous pouvez le faire :

Terminal window
docker tag myapp:1.0 myapp:2.0

Cette commande crĂ©e une nouvelle rĂ©fĂ©rence Ă  la mĂȘme image, mais avec le tag v2.0. Vous pouvez vĂ©rifier cela en listant les images locales avec docker images :

Terminal window
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp 1.0 1b5538b8380d 18 minutes ago 20.3MB
myapp 2.0 1b5538b8380d 18 minutes ago 20.3MB

Vous verrez Ă  la fois les tags v1.0 et v2.0 pour l’image myapp, mais ils pointeront tous deux vers le mĂȘme ID d’image.

Lister les containers avec docker ps

La commande docker ps permet de lister les containers Docker en cours d’exĂ©cution ou arrĂȘtĂ©s. C’est une commande essentielle pour visualiser les informations importantes sur vos containers actifs, comme leur nom, leur ID, les ports mappĂ©s, l’image Ă  partir de laquelle ils sont exĂ©cutĂ©s, et plus encore. Elle permet Ă©galement de surveiller l’état des containers dans votre environnement Docker.

La commande de base pour afficher les containers en cours d’exĂ©cution est :

Terminal window
docker ps

Par dĂ©faut, docker ps affiche uniquement les containers actifs (c’est-Ă -dire en cours d’exĂ©cution). Pour lister tous les containers (y compris les containers arrĂȘtĂ©s), vous devez utiliser l’option -a.

Terminal window
docker ps -a

Voici un exemple de sortie typique de la commande docker ps :

Terminal window
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1f86db17d2c myapp:1.0 "nginx -g 'daemon of
" 12 minutes ago Up 12 minutes 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp practical_banzai
1c9b8569a9cd myapp:1.0 "nginx -g 'daemon of
" 23 minutes ago Up 23 minutes 80/tcp upbeat_gould
4f8dd1f2f176 myapp:1.0 "-d" 23 minutes ago Created 80/tcp jovial_allen
07dac3c0d17c erikvl87/languagetool "bash start.sh" 6 days ago Up 2 hours (healthy) 0.0.0.0:8010->8010/tcp, :::8010->8010/tcp LanguageTool

Explication des colonnes :

  • CONTAINER ID : L’ID unique du container. Cet ID est utilisĂ© pour rĂ©fĂ©rencer le container dans d’autres commandes Docker (par exemple, docker stop, docker rm, etc.).
  • IMAGE : L’image Ă  partir de laquelle le container a Ă©tĂ© créé. Cela vous indique quelle version de l’application ou du service tourne dans le container (ici, myapp:1.0 et erikvl87/languagetool).
  • COMMAND : La commande qui a Ă©tĂ© exĂ©cutĂ©e Ă  l’intĂ©rieur du container au moment de son lancement. Elle correspond Ă  ce que l’image a dĂ©fini dans le Dockerfile via la directive CMD ou ENTRYPOINT.
  • CREATED : Le moment oĂč le container a Ă©tĂ© créé.
  • STATUS : L’état du container. Cela peut ĂȘtre Up (en cours d’exĂ©cution), Exited (arrĂȘtĂ©), ou d’autres Ă©tats (comme Paused si vous avez mis un container en pause).
  • PORTS : Les ports mappĂ©s entre le container et la machine hĂŽte. Par exemple, 0.0.0.0:8080->80/tcp signifie que le port 8080 de l’hĂŽte est mappĂ© au port 80 du container.
  • NAMES : Le nom du container. Docker gĂ©nĂšre un nom par dĂ©faut pour chaque container si vous n’en spĂ©cifiez pas un avec l’option --name lors de la crĂ©ation du container.

Gérer les instances de containers

Les commandes docker stop et docker rm sont essentielles pour arrĂȘter et supprimer les containers Docker. Ces deux commandes permettent de gĂ©rer le cycle de vie des containers, qu’il s’agisse d’arrĂȘter un container en cours d’exĂ©cution ou de supprimer dĂ©finitivement un container qui n’est plus nĂ©cessaire. Voici comment les utiliser de maniĂšre efficace.

docker stop

La commande docker stop permet d’arrĂȘter un container en cours d’exĂ©cution de maniĂšre propre et contrĂŽlĂ©e. Lorsqu’un container est arrĂȘtĂ©, Docker envoie un signal SIGTERM au processus principal du container pour lui donner la possibilitĂ© de terminer correctement ses opĂ©rations. AprĂšs un certain dĂ©lai (par dĂ©faut 10 secondes), Docker envoie un signal SIGKILL pour forcer l’arrĂȘt si le processus ne s’est pas terminĂ©.

Terminal window
docker stop [OPTIONS] CONTAINER [CONTAINER...]
  • CONTAINER : L’ID ou le nom du container que vous souhaitez arrĂȘter.
  • OPTIONS : Les options disponibles incluent notamment la durĂ©e du dĂ©lai avant l’arrĂȘt forcĂ©.

Exemples :

  1. ArrĂȘter un container avec son nom :

    Terminal window
    docker stop mycontainer

    Cette commande envoie un signal d’arrĂȘt au container nommĂ© mycontainer.

  2. ArrĂȘter un container avec son ID :

    Terminal window
    docker stop 4c01db0b339c

    Ici, Docker arrĂȘte le container dont l’ID est 4c01db0b339c.

docker rm

La commande docker rm permet de supprimer un container qui est arrĂȘtĂ©. Une fois supprimĂ©, le container ne peut plus ĂȘtre redĂ©marrĂ© ou rĂ©cupĂ©rĂ©, Ă  moins de recrĂ©er un container Ă  partir de l’image originale. Cette commande est utile pour nettoyer les containers qui ne sont plus utilisĂ©s afin de libĂ©rer de l’espace disque.

Terminal window
docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • CONTAINER : L’ID ou le nom du container Ă  supprimer.
  • OPTIONS : Les options incluent la suppression forcĂ©e des containers actifs avec -f.

Exemples :

  1. Supprimer un container arrĂȘtĂ© :

    Terminal window
    docker rm mycontainer

    Cette commande supprime le container nommĂ© mycontainer. Le container doit ĂȘtre arrĂȘtĂ© avant de pouvoir ĂȘtre supprimĂ©.

  2. Supprimer plusieurs containers en une seule commande :

    Vous pouvez spécifier plusieurs containers à supprimer en séparant leurs noms ou IDs.

    Terminal window
    docker rm container1 container2 container3
  3. Supprimer un container actif avec -f :

    Si un container est en cours d’exĂ©cution, vous ne pouvez pas le supprimer directement. Il faut soit l’arrĂȘter d’abord avec docker stop, soit utiliser l’option -f pour forcer la suppression (ce qui arrĂȘte et supprime le container en une seule Ă©tape).

    Terminal window
    docker rm -f mycontainer

    Cette commande force l’arrĂȘt et la suppression immĂ©diate de mycontainer.

Supprimer des images

La commande docker rmi est utilisĂ©e pour supprimer des images Docker stockĂ©es localement sur votre machine. Cela permet de libĂ©rer de l’espace disque ou de supprimer des images obsolĂštes ou non dĂ©sirĂ©es. Contrairement Ă  la suppression de containers (docker rm), qui concerne les instances en cours d’exĂ©cution d’une image, docker rmi supprime l’image elle-mĂȘme, empĂȘchant ainsi la crĂ©ation de nouveaux containers basĂ©s sur cette image, Ă  moins qu’elle ne soit re-tĂ©lĂ©chargĂ©e ou reconstruite.

La syntaxe de base pour supprimer une image est la suivante :

Terminal window
docker rmi [OPTIONS] IMAGE [IMAGE...]
  • IMAGE : L’ID ou le nom de l’image Ă  supprimer. Vous pouvez spĂ©cifier plusieurs images Ă  la fois.
  • OPTIONS : Des options supplĂ©mentaires pour contrĂŽler la suppression.

Exemple simple :

Pour supprimer une image par son ID ou son nom :

Terminal window
docker rmi nginx:latest

ou

Terminal window
docker rmi a9e5b1d98f9c

Dans cet exemple, Docker supprime l’image nginx:latest ou l’image avec l’ID a9e5b1d98f9c.

Options courantes de docker rmi

  1. -f : Forcer la suppression d’une image

    Si une image est utilisĂ©e par un container (en cours d’exĂ©cution ou arrĂȘtĂ©), Docker ne vous permettra pas de la supprimer par dĂ©faut. Pour forcer la suppression d’une image, utilisez l’option -f (force).

    Terminal window
    docker rmi -f nginx:latest

    Cela force Docker Ă  supprimer l’image nginx:latest, mĂȘme si des containers en dĂ©pendent. Attention : cela peut avoir des consĂ©quences si vous avez des containers actifs basĂ©s sur cette image.

  2. Supprimer plusieurs images en une seule commande

    Vous pouvez spécifier plusieurs images à supprimer en une seule ligne de commande. Utilisez simplement les noms ou IDs des images, séparés par des espaces.

    Terminal window
    docker rmi nginx:latest redis:alpine ubuntu:20.04

    Dans cet exemple, Docker supprimera les images nginx:latest, redis:alpine et ubuntu:20.04.

  3. Supprimer toutes les images inutilisées

    Si vous avez accumulĂ© beaucoup d’images inutilisĂ©es et souhaitez faire du mĂ©nage, vous pouvez utiliser la commande docker image prune pour supprimer toutes les images dangling (c’est-Ă -dire les images sans tag ou non utilisĂ©es).

    Terminal window
    docker image prune

    Cette commande supprime toutes les images qui ne sont pas utilisĂ©es par des containers en cours d’exĂ©cution et qui ne sont pas taguĂ©es. Pour forcer la suppression de toutes les images inutilisĂ©es sans confirmation, utilisez l’option -f :

    Terminal window
    docker image prune -f

Gérer les ressources Docker avec docker system

La commande docker system est une commande puissante qui permet de gĂ©rer les ressources globales de Docker, telles que les containers, images, volumes et rĂ©seaux. Elle regroupe plusieurs sous-commandes qui permettent de nettoyer, surveiller et optimiser l’utilisation des ressources sur votre systĂšme Docker.

La syntaxe de base de docker system est :

Terminal window
docker system [COMMAND]

Voici un aperçu des sous-commandes principales disponibles avec docker system.

  1. docker system df : VĂ©rifier l’utilisation des ressources Docker

    La commande docker system df vous permet de vĂ©rifier l’espace disque utilisĂ© par Docker, ainsi que l’espace occupĂ© par les images, containers, volumes et rĂ©seaux.

    Terminal window
    docker system df

    Exemple de sortie :

    Terminal window
    TYPE TOTAL ACTIVE SIZE RECLAIMABLE
    Images 15 3 2.35GB 1.2GB (51%)
    Containers 10 2 500MB 300MB (60%)
    Local Volumes 5 5 1.5GB 0B (0%)
    Build Cache 0 0 0B 0B

    Explication des colonnes :

    • TYPE : Le type de ressource (images, containers, volumes, etc.).
    • TOTAL : Le nombre total d’élĂ©ments pour chaque type.
    • ACTIVE : Le nombre d’élĂ©ments actuellement utilisĂ©s.
    • SIZE : L’espace disque total occupĂ© par chaque type.
    • RECLAIMABLE : L’espace disque qui peut ĂȘtre rĂ©cupĂ©rĂ© (rĂ©utilisĂ© ou libĂ©rĂ©).

    Cela permet d’identifier rapidement quelles ressources consomment le plus d’espace et peuvent ĂȘtre nettoyĂ©es.

  2. docker system prune : Nettoyer les ressources inutilisées

    La commande docker system prune est utilisĂ©e pour supprimer toutes les ressources inutilisĂ©es (images non utilisĂ©es, containers arrĂȘtĂ©s, volumes orphelins, rĂ©seaux non utilisĂ©s). C’est une maniĂšre efficace de nettoyer votre environnement Docker et de libĂ©rer de l’espace disque.

    Terminal window
    docker system prune

    Cela supprime :

    • Les containers arrĂȘtĂ©s.
    • Les images dangling (images sans tag ou inutilisĂ©es).
    • Les rĂ©seaux non utilisĂ©s.
    • Les volumes non utilisĂ©s.

    Exemple de sortie :

    Terminal window
    WARNING! This will remove:
    - all stopped containers
    - all dangling images
    - all unused networks
    Are you sure you want to continue? [y/N] y
    Deleted Containers:
    a9e5b1d98f9c
    f670fd9a76f5
    Deleted Images:
    untagged: ubuntu:latest
    deleted: sha256:7e0aa2d69a15
    Deleted Networks:
    my-network
    Total reclaimed space: 2.3GB
    • -a : Supprimer toutes les images inutilisĂ©es

      Si vous voulez Ă©galement supprimer les images qui ne sont pas associĂ©es Ă  un container actif (et pas seulement les images dangling), utilisez l’option -a avec docker system prune.

      Terminal window
      docker system prune -a

      Cela supprime toutes les images inutilisĂ©es, mĂȘme si elles sont taguĂ©es mais non utilisĂ©es par un container actif.

    • -f : Forcer la suppression sans confirmation

      Si vous souhaitez automatiser le processus de nettoyage, vous pouvez ajouter l’option -f pour ne pas avoir à confirmer la suppression manuellement.

      Terminal window
      docker system prune -f
    • --volumes : Nettoyer aussi les volumes

      Par dĂ©faut, docker system prune ne supprime pas les volumes inutilisĂ©s. Si vous voulez Ă©galement supprimer les volumes orphelins, ajoutez l’option --volumes.

      Terminal window
      docker system prune --volumes

      Attention : Cette option supprime définitivement tous les volumes non utilisés, ce qui peut entraßner la perte de données si des volumes importants ne sont pas attachés à des containers.

  3. docker system info : Informations systĂšme sur Docker

    La commande docker system info fournit des informations dĂ©taillĂ©es sur l’installation de Docker, notamment les versions, les paramĂštres de configuration et l’état de votre systĂšme Docker.

    Terminal window
    docker system info

    Exemple de sortie :

    Terminal window
    Containers: 5
    Running: 2
    Paused: 0
    Stopped: 3
    Images: 15
    Server Version: 20.10.8
    Storage Driver: overlay2
    ...

    Vous pouvez voir des informations comme :

    • Le nombre total de containers (en cours d’exĂ©cution, en pause, ou arrĂȘtĂ©s).
    • Le nombre d’images locales.
    • La version de Docker installĂ©e.
    • Le driver de stockage utilisĂ©.
    • Des informations sur le rĂ©seau, les volumes et d’autres composants.
  4. docker system events : Surveiller les événements Docker en temps réel

    La commande docker system events vous permet de surveiller en temps réel les événements qui se produisent sur votre systÚme Docker. Cela inclut les événements liés aux containers, aux images, aux volumes et aux réseaux.

    Terminal window
    docker system events

    Cette commande continue d’afficher les Ă©vĂ©nements au fur et Ă  mesure qu’ils se produisent, ce qui en fait un outil prĂ©cieux pour le diagnostic et le suivi des actions dans un environnement Docker.

    Exemple de sortie d’évĂ©nements :

    Terminal window
    2021-09-12T12:00:10.123456789Z container start 7c99e03b2bf4 (image=nginx, name=mynginx)
    2021-09-12T12:02:20.987654321Z network create my-network (id=7df1bfc4a128)
    2021-09-12T12:03:30.654321789Z container stop 7c99e03b2bf4 (image=nginx, name=mynginx)

    Vous pouvez également filtrer les événements avec des options pour ne voir que ceux liés à des types de ressources spécifiques (par exemple, containers ou réseaux).

ContrĂŽle de connaissances

Pourquoi ce contrĂŽle ?

Cet contrÎle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomĂštre commence dĂšs que vous cliquez sur DĂ©marrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour rĂ©ussir, vous devez obtenir au moins 80% de bonnes rĂ©ponses.

💡 Je ne fournis pas directement les rĂ©ponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront ĂȘtre proposĂ©es dans le guide ou aprĂšs l’examen.

Bonne chance ! 🚀

Conclusion

Docker, c’est bien plus qu’un simple outil de conteneurisation. C’est un accĂ©lĂ©rateur de productivitĂ©, un booster de dĂ©ploiement et un garant de portabilitĂ© pour vos applications. En le maĂźtrisant, vous gagnez en efficacitĂ©, en fiabilitĂ© et en souplesse, que ce soit pour tester une app en local, dĂ©ployer en production, ou automatiser votre infrastructure.

Vous avez maintenant toutes les clés pour :

  • CrĂ©er et gĂ©rer des conteneurs lĂ©gers et isolĂ©s
  • Construire des images optimisĂ©es et versionnĂ©es
  • Nettoyer, inspecter et maintenir un environnement propre avec les bonnes commandes

Et surtout, intégrer Docker dans vos workflows DevOps.

Et ce n’est que le dĂ©but ! Combinez Docker avec Docker Compose, Docker-Swarm, Kubernetes, ou encore Ansible et Terraform pour aller encore plus loin dans l’automatisation et l’orchestration.

Sur ce site, vous trouverez d’autres documentations ou billets de blog, permettant de progresser dans l’utilisation de Docker :

FAQ - Questions Fréquemment Posées

Qu’est‑ce qu’un moteur de conteneurs (container engine) ?
Un moteur de conteneurs est un logiciel qui permet de crĂ©er, dĂ©ployer et gĂ©rer des conteneurs isolĂ©s, en assurant la crĂ©ation d’images, le dĂ©marrage et l’arrĂȘt des conteneurs, l’isolation des ressources et la gestion rĂ©seau et sĂ©curitĂ©.
Quels sont les principaux moteurs de conteneurs et leurs particularités ?
Les principaux moteurs sont Docker (le plus utilisĂ© avec un vaste Ă©cosystĂšme), Podman (sans dĂ©mon pour plus de sĂ©curitĂ©), LXC ou Incus (conteneurs systĂšme complets), CRI‑O (lĂ©ger et compatible Kubernetes) et containerd (runtime performant utilisĂ© aussi par Kubernetes).
Quelles sont les bonnes pratiques pour configurer Docker en production ?
CrĂ©er une partition dĂ©diĂ©e pour /var/lib/docker, dĂ©sactiver la communication inter‑conteneurs (icc false), dĂ©sactiver l’élĂ©vation de privilĂšge dans les conteneurs et activer l’audit des fichiers Docker.
Comment sécuriser des déploiements Docker en production ?
Utiliser des images certifiĂ©es et Docker Content Trust, limiter les conteneurs privilĂ©giĂ©s, appliquer AppArmor ou SELinux, mettre en place des IDS/WAF pour surveiller les journaux, et protĂ©ger l’accĂšs au dĂ©mon Docker.
Quels types de volumes Docker et plugins utiliser pour persister les données ?
Utiliser les volumes standards pour la persistance, tmpfs pour les fichiers temporaires, bind mounts ou volumes NFS pour partage hîte‑conteneur, ou plugins comme SSHFS pour stockages distants.
Quelle est la différence entre une image et un conteneur ?
Une image Docker est un modĂšle statique et immuable qui contient tout le nĂ©cessaire pour exĂ©cuter une application, tandis qu’un conteneur est une instance en cours d’exĂ©cution de cette image avec son propre systĂšme de fichiers et environnement.
Comment fonctionne le systÚme de réseau Docker ?
Docker propose plusieurs modes rĂ©seau : bridge (par dĂ©faut), host (utilise l’hĂŽte directement), overlay (rĂ©seau multi-hĂŽtes) et macvlan. Chaque mode offre des niveaux d’isolation et d’accessibilitĂ© diffĂ©rents.
Pourquoi utiliser Docker Compose ?
Docker Compose permet de dĂ©finir et de gĂ©rer des applications multi-conteneurs Ă  l’aide d’un fichier YAML. Il simplifie le dĂ©ploiement, le scaling et le cycle de vie d’une stack de services.
Quelle est la différence entre Docker et Kubernetes ?
Docker gĂšre la crĂ©ation et l’exĂ©cution de conteneurs sur un seul hĂŽte, alors que Kubernetes orchestre plusieurs conteneurs rĂ©partis sur un cluster, avec des fonctions d’auto-scaling, de redondance et de gestion d’état.
Qu’est-ce qu’un Dockerfile et comment l’utiliser ?
Un Dockerfile est un script texte contenant les instructions nĂ©cessaires Ă  la crĂ©ation d’une image Docker. Il est utilisĂ© avec la commande docker build pour gĂ©nĂ©rer une image personnalisĂ©e.

Plus d’infos