Mise en place de Docker sur Linux

Docker est une plateforme de conteneurisation qui encapsule des applications et leurs dépendances dans des conteneurs, assurant une portabilité et une cohérence entre différents environnements. Il utilise des images pour créer ces conteneurs isolés, facilitant le développement, le test et le déploiement d'applications. Docker simplifie la gestion des applications en rendant leur déploiement rapide et fiable, quel que soit l'environnement cible.

Qu'est-ce que Docker

image.png

Docker est une plateforme de conteneurisation open source qui permet de développer, déployer et exécuter des applications dans des conteneurs. Un conteneur, dans le contexte de Docker, encapsule une application avec toutes ses dépendances (bibliothèques, outils, fichiers de configuration, etc.) dans un seul paquet ou "image". Cela garantit que l'application s'exécute de manière uniforme et prévisible sur n'importe quel environnement prenant en charge Docker, qu'il s'agisse d'un ordinateur personnel, d'un serveur, ou d'un cloud.

Avantages de Docker

expedition (2).png

Composants Clés de Docker

Installation de Docker sur Linux

Installer Docker sur Linux vous permet de lancer des applications dans des conteneurs logiciels légers et portables.

Nous allons ici installer Docker sur une distribution Linux basée sur Debian ou Ubuntu, qui sont parmi les plus populaires.

Étape 1 : Mise à jour du système

Commencez par mettre à jour la liste des paquets et mettez a jour votre système pour vous assurer que toutes les dépendances sont à jour. Ouvrez un terminal et tapez la commande :

sudo apt update && sudo apt upgrade -y

Étape 2 : Installer les paquets prérequis

telecharger.png

Il y a quelques paquets dont Docker a besoin pour s'exécuter correctement. Tapez cette commande afin de les installer :

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Étape 3 : Ajouter la clé GPG officielle de Docker

Pour s'assurer que les paquets téléchargés sont authentiques, ajoutez la clé GPG du dépôt officiel Docker :

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Lors de l'installation de paquets comme Docker, la clé GPG sert à vérifier l'authenticité des paquets téléchargés. En ajoutant la clé GPG du dépôt Docker à votre système, vous dites à votre gestionnaire de paquets de faire confiance aux paquets venant de ce dépôt, assurant qu'ils n'ont pas été altérés et qu'ils sont bien ceux publiés par l'équipe Docker. C'est une mesure de sécurité importante pour éviter l'installation de logiciels malveillants.

Étape 4 : Ajouter le dépôt Docker aux sources APT

expedier-dans-une-bouteille.png


Ajoutez le dépôt officiel Docker à vos sources APT pour obtenir les dernières versions de Docker :

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Étape 5 : Installer Docker CE (Community Edition)

Mettez à jour à nouveau votre liste de paquets pour inclure les nouveaux paquets du dépôt Docker, puis installez Docker CE :

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Étape 6 : Vérifier l'installation de Docker

deposer.png

Pour vous assurer que Docker est correctement installé et fonctionne, lancez :

sudo systemctl status docker

image.png


Vous devriez voir que le service est actif. Vous pouvez également exécuter un conteneur de test :

sudo docker run hello-world

image.png

Ce conteneur teste votre installation en affichant un message de bienvenue.

C'est tout bon !

fete (1).png

Félicitations, vous avez installé Docker sur votre système Linux ! Vous pouvez maintenant commencer à utiliser Docker pour développer, déployer et exécuter des applications dans des conteneurs

Comprendre les images et les conteneurs

Lorsque l'on débute avec Docker, il existe souvent une confusion entre une image et un conteneur. Pourtant, la différence est plutôt simple

On peut comparer par exemple une image Docker à un plan de construction ou un modèle, ce plan contient tout ce qui est nécessaire pour faire fonctionner une application : le système, la base, les bibliothèques, les dépendances et les fichiers dont on a besoin.

Le conteneur Docker, quant à lui, est une instance en cours d'exécution de cette image.cuisson.png

Une comparaison toute simple : Une image Docker c'est la recette du gâteau > Un conteneur est le gâteau préparé à partir cette recette

Vous pouvez créer autant de conteneurs que vous le souhaitez à partir de cette image (tout comme les gâteaux a partir de la recette)

Par exemple :

Télécharger une image
docker pull nginx
Créer et démarrer un conteneur
docker run -d nginx
Lister les images présentes sur le système
docker images
Lister les conteneurs en cours d'exécution
docker ps

Comprendre les ports Docker

Les conteneurs Docker sont isolés du système hôte. Par défaut, les applications qu'ils contiennent ne sont pas accessibles depuis votre navigateur ou votre réseau

Pour rendre un service accessible, vous avez besoin de déclarer/publier un port

Prenons l'exemple suivant :

docker run -p 8080:80 nginx

Le premier nombre 8080 corresponds au port de votre machine, et le second correspond au port utilisé par le conteneur 80

Par exemple :

03f4a689-b92b-4f8a-ae46-d001f2e270b5.png

Il est possible de choisir pratiquement n'importe quel port côté machine hôte. 

Par exemple 3000:80, 8080:80, 8888:80, 12345:80 etc.

Tous ces exemples permettraient d'accéder au même serveur web, mais avec un port différentnuage.png

Pourquoi est-ce utile ?

C'est utile, car ça permet notamment d'exécuter plusieurs services web sur la même machine, d'éviter les conflits entre application ou d'organiser plus facilement ses services.

C'est pour cette raison qu'il est fréquent de rencontrer des applications Docker accessibles sur des ports comme 3000, 3001, 8080, 9443, 5000 etc.

Docker Compose, à quoi ca sert ?

Certaines applications peuvent être un peu plus complexes que d'autres et la simple commande docker run peut rapidement devenir difficile à lire et à maintenir.

Docker Compose permet de décrire l'ensemble d'une application dans un simple fichier texte nommé docker-compose.yml ou compose.yml

Voici a quoi ressemble ce fichier :

services: 
  uptime-kuma: 
    image: louislam/uptime-kuma 
    container_name: uptime-kuma 
    ports:
      - "3001:3001" 
    volumes: 
      - ./data:/app/data 
    restart: unless-stopped

Si l'on détaille chaque ligne on à :

services : Il contient la liste des conteneurs qui seront créés.machine-a-ecrire.png

uptime-kuma : C'est le nom du service choisi par l'utilisateur, ici le même que l'image mais vous pouvez mettre ce que vous voulez

image : Indique qu'elle image Docker sera utilisée, ici c'est l'image louislam/uptime-kuma

container_name Le nom qui sera attribué au conteneur, ici uptime-kuma

ports Permets de rendre l'application accessible depuis le réseau, nous avons choisi le port 3001 pour l'hôte ainsi que pour le conteneur, le service sera donc accessible depuis IP-DE-L'HOTE:3001

volumes : permets de conserver les données même après la suppression du conteneur, ici nous avons choisi ./data:/app/data. Lors du premier lancement du conteneur, un fichier data sera crée à côté du fichier Compose.

restart : Il permet de déterminer le comportement du conteneur après un redémarrage du serveur, dans l'exemple, nous avons choisi restart: unless-stopped. Dans ce cas, le conteneur redémarrera automatiquement sauf si l'administrateur l'a volontairement arrêté.

Voici d'autres options possibles :

restart: no

Le conteneur ne redémarre jamais automatiquement (comportement par défaut).

restart: always

Le conteneur redémarre systématiquement, même s'il a été arrêté manuellement.

restart: on-failure

Le conteneur redémarre uniquement en cas d'échec (code de sortie différent de 0).

restart: on-failure:5

Le conteneur redémarre en cas d'échec, avec un maximum de 5 tentatives.

Commandes principales

Voici les commandes que l'on peut lancer en se placant dans le même dossier que le fichier compose

Démarrer les services :

docker compose up -d

Afficher les conteneurs :

docker compose ps

Afficher les journaux :

docker compose logs

Arrêter les services :

docker compose down

Docker Compose est aujourd'hui la méthode la plus utilisée pour déployer des applications avec Docker.

Il permet de conserver la configuration complète d'une application dans un fichier unique, facile à sauvegarder, partager et réutiliser.