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 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 Portabilité : Les conteneurs Docker peuvent être exécutés sur n'importe quel système d'exploitation ou plateforme supportant Docker, ce qui réduit les problèmes de compatibilité. Isolation : Chaque conteneur fonctionne de manière isolée des autres et du système hôte, ce qui améliore la sécurité et réduit les conflits entre applications. Efficacité : Docker permet une utilisation plus efficace des ressources système par rapport aux machines virtuelles traditionnelles, car les conteneurs partagent le même noyau de système d'exploitation et isolent uniquement l'application et ses dépendances. Déploiement rapide : Docker facilite le déploiement rapide des applications en permettant aux développeurs de créer une image de conteneur une seule fois, puis de la déployer partout où Docker est installé. Développement et déploiement cohérents : Les développeurs peuvent travailler dans des environnements qui correspondent exactement à la configuration de production, ce qui réduit les surprises lors du déploiement. Composants Clés de Docker Images Docker : Les modèles en lecture seule utilisés pour créer des conteneurs. Une image contient tout ce qui est nécessaire pour exécuter une application, y compris le code, les bibliothèques et les variables d'environnement. Conteneurs Docker : Les instances exécutables d'une image. Les conteneurs s'exécutent de manière isolée les uns des autres et du système hôte. Docker Hub : Un registre public de Docker où les utilisateurs peuvent télécharger et partager des images Docker. Il existe également des registres privés pour stocker des images de manière sécurisée. Dockerfile : Un fichier texte contenant des instructions sur comment construire une image Docker spécifique. Les Dockerfiles automatisent le processus de création d'images. 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 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 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 Pour vous assurer que Docker est correctement installé et fonctionne, lancez : sudo systemctl status docker Vous devriez voir que le service est actif. Vous pouvez également exécuter un conteneur de test : sudo docker run hello-world Ce conteneur teste votre installation en affichant un message de bienvenue. C'est tout bon ! 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. 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 : L'image nginx permet de créer un serveur web. Vous pouvez démarrer plusieurs conteneurs basés sur cette même image, chacun avec sa propre configuration 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 : 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érent 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. 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.