Formation > Blog > Docker > Fichiers Docker, Docker Compose : la conteneurisation pour les nuls

Docker pour les nuls

La conteneurisation a révolutionné le déploiement des logiciels. Si l’idée d’isoler les applications dans leur environnement n’est pas nouvelle, la manière dont les conteneurs y parviennent est particulièrement efficace. L’aspect le plus essentiel de la conteneurisation est probablement la mise en réseau des conteneurs dans des environnements. Dans cet article, nous allons voir les bases de la conteneurisation et de la mise en réseau avec Docker, l’un des outils de conteneurisation les plus populaires.

Vous souhaitez devenir complètement opérationnel sur le déploiement d’applications conteneurisées ? Notre formation Docker en inter et intraentreprise vous permettra de déployer des environnements applicatifs et à les automatiser.

L’équipe Ambient IT

Que sont les DockerFiles ?

Un Dockerfile est un fichier texte contenant un ensemble d’instructions et de configurations pour construire une image Docker. Ils agissent comme un plan de création d’images de conteneurs Docker. Ils sont utilisés pour définir l’environnement et les dépendances nécessaires à l’exécution d’une application conteneurisée. À noter qu’ils ne fonctionnent que dans une seule application unique.

Les Dockerfiles se décomposent comme ceci :

  • FROM : spécifie l’image de base à partir de laquelle vous construisez
  • RUN : exécute une commande dans le conteneur
  • COPY/ADD : copie des fichiers locaux dans le conteneur
  • EXPOSE : Informe Docker que le conteneur écoutera sur les ports spécifiés au moment de l’exécution
  • CMD/ENTRYPOINT : Définit la commande par défaut à exécuter lorsque le conteneur démarre

Les Dockerfiles sont complètement reproductibles. Ils garantissent donc que n’importe qui peut recréer la même image de conteneur avec exactement le même environnement simplement en partageant le Dockerfile.

Un Dockerfile se présente généralement de cette façon :

# Utiliser une image de base officielle Python 3.8
FROM python:3.8-slim

# Définir le répertoire de travail dans le conteneur
WORKDIR /app

# Copier les fichiers locaux vers le répertoire de travail du conteneur
COPY . /app

# Installer les dépendances
RUN pip install --trusted-host pypi.python.org Flask

# Exposer le port que l'application utilise
EXPOSE 80

# Définir la variable d'environnement
ENV NAME World

# Exécuter l'application
CMD ["python", "app.py"]

Dans cet exemple :

  • FROM python:3.8-slim : sers à démarrer à partir d’une image Python officielle et utilise la version 3.8 slim
  • WORKDIR /app : permets de définir le répertoire de travail dans le conteneur
  • COPY . /app : copie tous les fichiers du répertoire actuel dans le répertoire de travail du conteneur (/app)
  • RUN pip install –trusted-host pypi.python.org Flask : installe Flask dans le conteneur
  • EXPOSE 80 : sers à informer Docker que l’application dans le conteneur utilisera le port 80
  • ENV NAME World : permets de définir une variable d’environnement nommée NAME avec la valeur « World« 
  • CMD [« python », « app.py »] : exécute le fichier app.py avec Python quand le conteneur démarre

Qu’est-ce que Docker Compose ?

Docker compose est quant à lui un outil permettant de de définir et d’exécuter des applications Docker multiconteneurs. Il vous permet de gérer des applications complexes composées de plusieurs services avec différentes dépendances.

Docker compose se sert d’un fichier YAML afin de définir les services, leur configuration et les connexions qu’ils partagent.

Le rôle d’un fichier docker-compose.yml est de spécifier les services, leurs images de base, les instructions de construction (si nécessaire), les variables d’environnement, les ports et les volumes.
Docker Compose gère l’orchestration de l’environnement Docker, c’est-à-dire l’ensemble du cycle de vie de plusieurs conteneurs. Cela inclut leur création, leur démarrage, leur arrêt et leur suppression. Il veille à ce que les conteneurs puissent facilement communiquer entre eux.

version: '3'

services:
  web:
    image: my-flask-app:latest
    build: 
      context: .
      dockerfile: Dockerfile
    ports:
      - "5000:5000"
    depends_on:
      - redis
    environment:
      - REDIS_HOST=redis
      - REDIS_PORT=6379
  redis:
    image: "redis:alpine"

L’exemple ci-dessus illustre comment Docker compose peut servir à orchestrer une application basique utilisant Flask comme application web et Redis comme base de données cache.

Un fichier YAML peut être utilisé pour démarrer tous les services avec docker compose up ou les arrêter avec Docker Compose down.

Différences majeures

Maintenant que nous avons eu un aperçu des différents éléments composant les deux outils, nous pouvons pointer du doigt leurs principales différences.

CritèreDockerfileDocker Compose
DéfinitionFichier script pour construire une image DockerOutil pour définir et gérer des applications multiconteneurs
ObjectifConstruire une image Docker en définissant l’environnement, les dépendances, etcOrchestre plusieurs conteneurs afin de déployer des applications
SyntaxeUtilise des instructions propres telles que FROM, RUN, CMD, etcUtilise le format YAML pour définir des services, volumes et réseaux
UtilisationConstruit une image avec docker buildDémarre les services avec docker-compose up et les arrête avec docker-compose down
PortéeGère la construction d’une seule image DockerPeut gérer et orchestrer plusieurs conteneurs simultanément
Principales différences entre Dockerfile et Docker Compose

Bien qu’ils soient très différents, Dockerfile et Docker Compose sont généralement utilisés ensemble par les équipes DevOps dans leurs missions de conteneurisation.

En utilisant à la fois Dockerfile et Docker Compose, vous pouvez simplifier le développement et le déploiement d’applications conteneurisées, ce qui vous permettra d’exploiter plus facilement tout le potentiel de la technologie de conteneurisation.

UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?

Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.

ILS SE SONT FORMÉS CHEZ NOUS

partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp
partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp