Conteneurisation du service Réseau interne - CardinPatson/SysAdmin GitHub Wiki
Conteneurisation du service
Comme pour les autres services, nous avons utilisé un conteneur Docker. L'avantage d'un conteneur Docker est qu'il possède son propre environnement d'exécution et donc ses propres répertoires. À noter qu'il faut être en ROOT pour utiliser Docker. Chaque conteneur est créé à partir d'une image, créée elle-même à partir d'instructions listées dans un Dockerfile. Grâce à docker-compose, un fichier écrit au format yml, il est possible de lister l'ensemble des conteneurs à déployer.
Le Dockerfile est un fichier où chaque ligne est une instruction :
- FROM : première ligne obligatoire, c'est l'image sur laquelle on se base.
- RUN : spécifie une commande à exécuter lors du build de l'image.
- COPY : copie les fichiers qu'on veut utiliser.
- CMD : spécifie une commande qui sera exécutée lors du lancement du conteneur.
- ENV : définit les variables d'environnement.
- WORKDIR : permet de changer de répertoire.
- EXPOSE : permet d'exposer un port vers l'extérieur du conteneur.
- ...
On peut récupérer une image via le DockerHub qui est un répertoire en ligne qui met à disposition des millions d'images Docker.
docker pull <nom_image>
On peut également récupérer une image en compilant un Dockerfile avec la commande suivante
docker build -t <nom_image>
docker images
docker rmi <id_image>
docker run -dp 53:53 --name <nom_image> permet de créer et de démarrer le conteneur à partir de l'image
docker ps docker ps -a affiche la liste de tous les conteneurs même ceux éteints.
docker exec -it <nom_conteneur> <nom_commande>
docker stop <id_conteneur>
docker restart <id_conteneur>
docker rm <id_conteneur>
Avantages du docker-compose :
- portabilité : DC permet de créer ou de supprimer un environnement de développement complet avec une seule commande.
- test : permet de reproduire un environnement identique aux circonstances de production.
- plusieurs environnements isolés sur un seul hôte : plusieurs copies sur une seule machine, aucune interférence.
Un fichier docker-compose au format YAML définit la version, les services, les images, les noms, les réseaux, les volumes, les ports, les liens...
On peut détailler certaines propriétés dans la déclaration d'un conteneur au sein d'un docker-compose telles que :
- build : permet de renseigner le Dockerfile à partir duquel on va construire l'image utilisée par le conteneur
- volumes : permet de persister les données grâce à un répertoire virtuel
- container_name : permet de donner un nom au conteneur
- networks : permet d'identifier le réseau sur lequel se connecter
- ports : permet le mappage
- ...
Dans le Docker-compose des services internes, on peut retrouver la structure du fichier ainsi que les commentaires détaillés.
docker-compose up
docker-compose down
Sources :
https://www.axopen.com/blog/2021/03/docker-presentation-concepts-cles/
https://www.axopen.com/blog/2021/03/docker-tuto-deployer-conteneurs/
https://www.youtube.com/watch?v=fqMOX6JJhGo