Concepts de base

Concepts de base

21 October 2023

Sous Docker, il est important de comprendre les différentes parties que seront utilisées par la suite

Images Docker

Une image Docker est un modèle immuable qui contient le code source de l'application, les bibliothèques, les dépendances, et tous les éléments nécessaires pour exécuter l'application. Elle sert de base pour créer des conteneurs.

  • Création d'images : pour créer une image, un Dockerfile est nécessaire. C'est un fichier texte qui contient les instructions pour construire l'image.
  • Gestion d'images : utilisez la commande docker images pour lister les images disponibles, et docker rmi suivi du nom de l'image pour la supprimer.

Conteneurs Docker

Un conteneur est une instance exécutable d'une image Docker. Il encapsule l'application et son environnement d'exécution.

  • Création de conteneurs : utilisez la commande docker run suivi du nom de l'image pour créer et démarrer un conteneur.
  • Gestion de conteneurs : docker ps liste les conteneurs actifs, docker stop suivi du nom du conteneur l'arrête, et docker rm le supprime.

Volumes

Les volumes sont des systèmes de stockage persistants utilisés par Docker pour stocker les données des conteneurs. Ils permettent de garder les données même après la suppression d'un conteneur.

  • Création de volumes : utilisez docker volume create suivi du nom du volume pour créer un volume.
  • Gestion de volumes : docker volume ls liste les volumes, et docker volume rm suivi du nom du volume le supprime.

Réseaux

Docker permet de créer des réseaux pour la communication entre conteneurs.

  • Création de réseaux : utilisez docker network create suivi du nom du réseau pour créer un réseau.
  • Gestion de réseaux : docker network ls liste les réseaux, et docker network rm suivi du nom du réseau le supprime.

Dans l'ensemble, les commandes que vous utiliserez sont assez similaires et utilisent des mots clés connus tels que ls, rm...

Gestion des réseaux

Dans Docker, connecter un conteneur à plusieurs réseaux peut extrêmement être utile pour séparer les préoccupations ou les aspects de votre application. Par exemple, supposons que vous ayez une application web qui se compose d'une base de données, d'un backend, et d'un frontend. Vous pouvez créer trois réseaux séparés : reseau-db pour la base de données, reseau-backend pour le backend, et reseau-frontend pour le frontend. Vous pouvez ensuite connecter votre conteneur backend à reseau-db et reseau-frontend pour qu'il puisse communiquer avec la base de données et le frontend respectivement, tout en maintenant une séparation nette des préoccupations.

Créez les trois réseaux :

docker network create reseau-db
docker network create reseau-backend
docker network create reseau-frontend

Lancez votre conteneur backend et connectez-le au réseau reseau-db :

docker run --name mon-backend --network=reseau-db -d mon-image-backend

Ensuite, connectez le conteneur backend au réseau reseau-frontend :

docker network connect reseau-frontend mon-backend

Avec cette configuration, votre conteneur backend peut maintenant communiquer avec la base de données sur reseau-db et avec le frontend sur reseau-frontend, tout en maintenant une séparation claire, ce qui facilite la gestion et le débogage de votre application.

Ceci est un exemple un peu sommaire, mais permet d'expliquer le concept de réseau sous Docker. Vous verrez plus tard comment relier les conteneurs entre eux.