Docker et Docker-Compose pour les débutants

Voulez-vous apprendre à utiliser Docker et Docker-Compose ?


Ces outils permettent de déployer et gérer des applications complexes avec une facilité déconcertante.


Ce tutoriel vous montrera comment les utiliser, étape par étape.


Vous serez surpris de voir à quel point il est facile de mettre en place une application contenant plusieurs composants !

Qu'est-ce que Docker ?

Docker est un outil de virtualisation qui permet d'installer, configurer et exécuter des applications dans des conteneurs logiciels isolés les uns des autres.


Les conteneurs Docker sont légers, portables et peuvent être facilement déployés sur n'importe quel système d'exploitation et n'importe quelle plate-forme.


Les avantages de l'utilisation de Docker sont :

  • Facilité de configuration et déploiement rapide des applications
  • Isolation des composants dans nos propres conteneurs
  • Consommation réduite des ressources système comparée à une machine virtuelle
  • Possibilité de partager et d'utiliser facilement les images entre différents services et utilisateurs.

Comment installer Docker ?

Avant de pouvoir utiliser Docker, vous devez d'abord le télécharger et l'installer.


La procédure exacte dépend du système d'exploitation que vous utilisez, mais elle est généralement assez simple.


https://www.docker.com/


Une fois Docker installé, vous pouvez commencer à l'utiliser pour exécuter des applications dans des conteneurs.


Les conteneurs sont isolés les uns des autres et vous permettent d'exécuter plusieurs applications sur un seul système sans qu'elles interfèrent les unes avec les autres.


Ils sont donc idéaux pour les environnements de développement et de test dans lesquels vous souhaitez être en mesure d'activer et de désactiver rapidement différentes applications sans affecter les autres.


Vous pouvez également utiliser les conteneurs en production, bien que vous deviez tenir compte de certaines considérations supplémentaires, comme le stockage et la mise en réseau.


Mais dans l'ensemble, Docker est un outil puissant qui peut faciliter le développement, le test et le déploiement d'applications.

Comment créer et exécuter un conteneur Docker ?

Créer et exécuter un conteneur Docker est relativement simple.


Tout d'abord, vous devez télécharger l'image Docker dont vous avez besoin.


Vous pouvez le faire à partir du dépôt officiel ou en créant votre propre image.


Une fois l'image téléchargée, vous pouvez exécuter le conteneur avec la commande docker run et spécifier les paramètres souhaités.


Par exemple, vous pouvez spécifier la quantité de mémoire et de CPU que le conteneur peut utiliser, les ports à exposer et le répertoire à monter.


Vous pouvez également utiliser Docker Compose pour créer et exécuter des conteneurs plus complexes.


Avec Docker Compose, vous pouvez définir plusieurs services et leurs dépendances dans un seul fichier, puis les démarrer tous avec une seule commande.


Cela peut être particulièrement pratique lorsque vous développez des applications composées de plusieurs composants.


Dans tous les cas, une fois que vous avez créé et lancé votre conteneur, vous pouvez utiliser le CLI de Docker pour le gérer.


Grâce à l'interface CLI, vous pouvez consulter les journaux, inspecter les processus en cours d'exécution et même attacher un terminal pour interagir directement avec le conteneur.


Par conséquent, il y a très peu de choses que vous ne pouvez pas faire avec un conteneur Docker une fois qu'il est opérationnel.

Docker run getting-started


> $ docker run -d -p 80:80 docker/getting-started 

Listée les containers docker


 > $ docker ps -a                                                                                                                                                    
CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS              PORTS                NAMES
1d7c594dda67   docker/getting-started   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   epic_bardeen

Arrêter et supprimer un container


> $ docker stop 1d7c594dda67                                                                                                                                        
1d7c594dda67
                                                                                                                                                                            
> $ docker ps -a                                                                                                                                                    
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS                      PORTS     NAMES
1d7c594dda67   docker/getting-started   "/docker-entrypoint.…"   3 minutes ago   Exited (0) 10 seconds ago             epic_bardeen
                                                                                                                                                                            
> $ docker rm 1d7c594dda67                                                                                                                                          
1d7c594dda67
                                                                                                                                                                            
> $ docker ps -a                                                                                                                                                    
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Qu'est-ce que Docker Compose et comment l'utiliser ?

Docker Compose est un outil permettant de définir et d'exécuter des applications multi-conteneurs.


Il vous permet de spécifier un ensemble de conteneurs dans un fichier YAML, puis de faire tourner tous les conteneurs avec une seule commande.


Docker Compose est idéal pour les environnements de développement, de test et de préparation, ainsi que pour les déploiements de production.


Vous pouvez utiliser Docker Compose pour configurer les services d'une application, créer des réseaux distincts pour chaque service et relier les services entre eux.


Chaque conteneur peut être configuré avec ses propres options et paramètres.


Il est ainsi facile de personnaliser chaque conteneur en fonction de vos besoins.


Docker Compose est facile à utiliser et rapide à prendre en main.


Vous pouvez définir les services de votre application dans un fichier YAML, puis faire tourner tous les conteneurs avec une seule commande.


Une fois que votre application est opérationnelle, vous pouvez facilement la faire évoluer en ajoutant ou en supprimant des conteneurs.


Vous pouvez également utiliser Docker Compose pour exécuter plusieurs applications sur le même hôte.


Si vous cherchez un moyen simple de définir et d'exécuter des applications multi-conteneurs, Docker Compose est l'outil qu'il vous faut !

Utilisations courantes de Docker et docker-compose

Docker et Docker Compose sont fréquemment utilisés pour déployer des applications complexes, notamment des applications distribuées qui fonctionnent sur plusieurs serveurs.


En regroupant tout ce qui est nécessaire à l'exécution d'une application dans un "conteneur", il devient beaucoup plus facile de déplacer l'application et de s'assurer qu'elle fonctionnera dans le même environnement, quel que soit l'endroit où elle est déployée.


Cela permet également de créer rapidement de nouvelles instances d'une application ou même de créer des copies complètes d'une application existante à des fins de test.


Docker Compose est particulièrement utile pour gérer les applications à conteneurs multiples, car il permet aux développeurs de définir tous les services et dépendances dans un seul fichier.


Il est ainsi facile de lancer une application entière à l'aide d'une seule commande, et il est également beaucoup plus simple de mettre à jour ou de modifier des parties de l'application sans affecter les autres composants.


En résumé, Docker et Docker Compose sont des outils puissants qui permettent aux développeurs et aux administrateurs système de gérer facilement des applications complexes.


En regroupant dans un conteneur tout ce qui est nécessaire à l'exécution d'une application, Docker permet de déployer facilement des applications n'importe où.


Parallèlement, Docker Compose simplifie le processus de gestion des applications à conteneurs multiples en définissant tous les services et dépendances dans un seul fichier.


Par conséquent, ces outils sont essentiels pour quiconque cherche à rationaliser le processus de développement et de déploiement d'applications complexes.

Conseils pour une utilisation efficace de Docker et de docker-compose

  • Utilisez des images prédéfinies pour éviter les erreurs de configuration
  • Toujours définir la version d'une image Docker lorsque vous en téléchargez une
  • Utilisez Docker Compose pour gérer plusieurs conteneurs à la fois
  • Utilisez des commandes docker rm et docker stop pour arrêter et supprimer les conteneurs qui ne sont plus utilisés
  • Tenez vos images de Docker à jour pour assurer la sécurité et la stabilité
  • Utilisez des outils tels que docker stats pour surveiller l'utilisation des ressources de vos conteneurs

Exemple docker-compose et Dockerfile

docker-compose est un excellent outil pour lancer plusieurs conteneurs docker à la fois.


Dans ce fichier docker-compose, nous lançons une application web avec python et django dans un conteneur et une base de données dans un autre conteneur.


Docker est un outil très utile qui peut vous aider à exécuter différentes applications facilement.


Par exemple, vous pouvez utiliser docker pour exécuter une application django et mysql mais qui ne contient pas la base de données ou notre site web.


Ce docker-compose peut donc être utilisé pour une autre application facilement.


De plus, docker peut vous aider à monter des volumes afin de placer vos fichiers qui définiront votre application et votre base de données.


version: '3'
services:
  db:
    container_name: mysql
    image: mariadb:10.5.5
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
      MYSQL_ROOT_PASSWORD: test
    ports:
      - 3306:3306
    volumes:
      - ./db:/var/lib/mysql
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - ./blog:/app
    ports:
      - "8888:8000"
    depends_on:
      - db

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
COPY requirements.txt /app/
RUN pip install --upgrade pip && pip install -r requirements.txt
COPY . /app/

Docker-compose build, pour créer notre image avec notre dockerfile


$ docker-compose build                                                                                                                                            
[+] Building 25.6s (11/11) FINISHED                                                                                                                                         
 => [internal] load build definition from Dockerfile                                                                                                                   0.0s
 => => transferring dockerfile: 209B                                                                                                                                   0.0s
 => [internal] load .dockerignore                                                                                                                                      0.0s
 => => transferring context: 2B                                                                                                                                        0.0s
 => [internal] load metadata for docker.io/library/python:3                                                                                                            1.3s
 => [1/6] FROM docker.io/library/python:3@sha256:10fc14aa6ae69f69e4c953cffd9b0964843d8c163950491d2138af891377bc1d                                                      0.0s
 => [internal] load build context                                                                                                                                     20.6s
 => => transferring context: 221.02MB                                                                                                                                 20.5s
 => CACHED [2/6] RUN mkdir /app                                                                                                                                        0.0s
 => CACHED [3/6] WORKDIR /app                                                                                                                                          0.0s
 => CACHED [4/6] COPY requirements.txt /app/                                                                                                                           0.0s
 => CACHED [5/6] RUN pip install --upgrade pip && pip install -r requirements.txt                                                                                      0.0s
 => [6/6] COPY . /app/                                                                                                                                                 2.5s
 => exporting to image                                                                                                                                                 1.0s
 => => exporting layers                                                                                                                                                1.0s
 => => writing image sha256:a1be17455740241c33f7ff356bfca053fe7d1d31c7531b12c2de4cf007273f06                                                                           0.0s
 => => naming to docker.io/library/django-web 

Docker-compose up pour lancer nos containers

  • -d Pour lancer les containers en tache de fond.

$ docker-compose up -d                                                                                                                                            
[+] Running 3/3
 ⠿ Network django_default  Created                                                                                                                                     0.1s
 ⠿ Container mysql         Started                                                                                                                                     0.6s
 ⠿ Container django-web-1  Started                                                                                                                                     1.0s
                                                                                                                                                                            
> $ docker ps -a                                                                                                                                                    
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS         PORTS                    NAMES
584d89bda5b6   django-web       "python3 manage.py r…"   4 seconds ago   Up 3 seconds   0.0.0.0:8888->8000/tcp   django-web-1
bf4884140db8   mariadb:10.5.5   "docker-entrypoint.s…"   4 seconds ago   Up 3 seconds   0.0.0.0:3306->3306/tcp   mysql

On a notre application maintenant a l'adresse suivante sur notre machine http://localhost:8888/

Conclusion

En conclusion, Docker et Docker Compose sont des outils puissants qui faciliteront le développement et le déploiement des applications.


Docker et docker-compose sont deux outils qui peuvent être utilisés ensemble pour simplifier le processus de mise en place et de gestion des applications.


Docker vous permet de regrouper une application et ses dépendances dans une unité autonome, tandis que docker-compose vous permet de définir et de gérer des environnements applicatifs complexes.


Dans cette vidéo, je montre comment ces deux outils peuvent être utilisés ensemble pour créer et gérer une application web simple.


Je commence par créer un dockerfile qui définit l'image de base de l'application, puis j'utilise docker-compose pour définir l'environnement dans lequel l'application sera exécutée.


Enfin, je montre comment docker-compose peut être utilisé pour lancer l'application et la rendre disponible sur Internet.


En suivant cette vidéo, vous apprendrez à utiliser docker et docker-compose pour créer et gérer vos propres applications web.

Abonnez-vous

Abonner vous, pour recevoir les nouvelles publications et obtenir ma formation programmation pour débutant 100% gratuite.

ME SUIVRE

À PROPOS

Je m'appelle Gregory Lafitte, ancien étudiant de l'école 42, et aujourd’hui ingénieur informatique.


Je partage mes connaissances et mon expérience dans les métiers du numérique.