Aller au contenu principal

Plongée dans l'océan Docker

"Premiers pas sur le pont du navire Docker"

Objectif

  • Comprendre ce qu'est Docker et son importance dans le monde de la technologie.
  • Installer Docker sur un système Debian.
  • Exécuter les premières commandes Docker pour prendre en main cet outil.

Notions théoriques

C'est quoi Docker ?

Docker est une plateforme de conteneurisation qui permet de "conteneuriser" les applications, c'est-à-dire de les empaqueter avec toutes leurs dépendances dans des conteneurs.

Un conteneur est une unité standardisée de logiciel qui regroupe le code de l'application et toutes ses dépendances afin que l'application s'exécute rapidement et de manière fiable d'un environnement informatique à un autre.

info

Docker s'exécute sur le système d'exploitation hôte et utilise les fonctionnalités de l'OS pour isoler les processus et contrôler les ressources.

Pour les développeurs ou les administrateurs systèmes ?

Docker est un outil essentiel pour les développeurs et les administrateurs système car il facilite le déploiement et la gestion d'applications.

Docker utilise des images, qui sont des sortes de plans de construction pour créer des conteneurs où résideront les applications.


Durée de vie d'un conteneur

Un conteneur Docker peut être :

  • créé,
  • lancé,
  • arrêté,
  • déplacé
  • et supprimé.

Différences clés entre Docker et les VMs
  1. Niveau d'isolation :

    • Docker : Les conteneurs partagent le même noyau du système d'exploitation hôte mais sont isolés les uns des autres. Ils sont considérés comme légers parce qu'ils ne nécessitent pas de système d'exploitation invité supplémentaire.
    • Une VM (Proxmox, VMware...) : Les machines virtuelles fournissent une isolation complète en virtualisant le matériel pour chaque VM. Chaque VM a son propre système d'exploitation, ce qui peut entraîner une utilisation plus importante des ressources.
  2. Performance :

    • Docker : Les conteneurs démarrent presque instantanément et utilisent moins de ressources car il n'y a pas de surcharge d'un système d'exploitation invité complet.
    • Une VM (Proxmox, VMware...) : Les VMs peuvent prendre plus de temps à démarrer et consomment généralement plus de ressources système en raison de la nécessité de virtualiser le matériel et de faire fonctionner des instances complètes de systèmes d'exploitation.
  3. Utilisation des ressources :

    • Docker : Plus efficace en termes d'utilisation des ressources car les conteneurs partagent le système d'exploitation de l'hôte et nécessitent moins de ressources (CPU, mémoire, stockage).
    • Une VM (Proxmox, VMware...) : Chaque VM nécessite une allocation dédiée de ressources qui ne peut pas être aussi facilement partagée ou ajustée à la volée.
  4. Compatibilité et portabilité :

    • Docker : Les conteneurs peuvent s'exécuter sur n'importe quel système qui a Docker installé, indépendamment de l'environnement sous-jacent, ce qui les rend très portables.
    • Une VM (Proxmox, VMware...) : Les VMs sont moins portables car elles dépendent de l'hyperviseur spécifique et de la compatibilité matérielle.
  5. Gestion et maintenance :

    • Docker : La gestion des conteneurs est relativement simple grâce à l'écosystème Docker (par exemple, Docker Compose, Docker Swarm) et à des outils comme Kubernetes pour l'orchestration.
    • Une VM (Proxmox, VMware...) : Proxmox offre une interface Web pour la gestion centralisée des VMs et des conteneurs LXC, mais la maintenance peut être plus lourde du fait de la gestion de multiples systèmes d'exploitation.
  6. Cas d'utilisation :

    • Docker : Idéal pour les applications microservices, le développement rapide d'applications, et les environnements où la densité et l'efficacité des ressources sont importantes.
    • Une VM (Proxmox, VMware...) : Mieux adapté aux applications qui nécessitent une isolation complète, une compatibilité matérielle spécifique ou qui s'exécutent dans un environnement fortement réglementé.

En résumé :

  • Docker est plus orienté vers la portabilité des applications et l'efficacité,
  • Une VM (Proxmox, VMware...) est plus axée sur une isolation complète.

Le choix entre les 2 dépendra des besoins spécifiques de votre application.

astuce

Il est possible d'imaginer Docker comme un navire cargo qui peut transporter vos applications dans des conteneurs isolés, permettant ainsi une navigation fluide entre différents environnements informatiques.

  • Docker permet de s'assurer que l'environnement de votre application est le même, peu importe où elle est déployée.

Installation de Docker

L'installation de Docker en utilisant la procédure recommandée sur le site officiel de Docker https://docs.docker.com/engine/install/debian/ assure que vous obtenez la dernière version et que l'installation est adaptée aux meilleures pratiques.

Voici les étapes pour installer Docker Engine sur Debian :

  1. Mise à jour du système : Mettez à jour l'index des paquets apt et installez les paquets permettant à apt d'utiliser un dépôt sur HTTPS :

    sudo  update
    sudo install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  2. Ajouter le GPG officiel Docker : Ajoutez la clé GPG officielle de Docker :

    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. Configurer le dépôt stable : Configurez le dépôt stable de Docker :

    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  4. Installer Docker Engine : Mettez à jour l'index des paquets apt et installez le moteur Docker (docker-ce), le CLI Docker (docker-ce-cli), et le paquet containerd.io :

    sudo  update
    sudo install docker-ce docker-ce-cli containerd.io
  5. Vérifier l'installation : Vérifiez que Docker est installé correctement en exécutant l'image hello-world :

    sudo docker run hello-world

Cette procédure installe Docker à partir du dépôt officiel de Docker, ce qui garantit que vous disposez de la dernière version stable. Il est important de noter que les commandes peuvent changer avec le temps, donc il est toujours recommandé de consulter la documentation officielle pour les instructions les plus récentes.

Pour les utilisateurs de Debian, il est également important de s'assurer que leur version de Debian est prise en charge par Docker, car les instructions peuvent varier légèrement entre les versions de Debian.

Enfin, après l'installation, il est souvent recommandé d'ajouter votre utilisateur au groupe docker pour pouvoir exécuter les commandes Docker sans sudo :

sudo adduser votre_utilisateur docker
# ou
sudo usermod -aG docker votre_utilisateur

Après avoir ajouté votre utilisateur au groupe docker, vous devrez vous déconnecter et vous reconnecter pour que ces changements prennent effet.

astuce

Il est possible d'installer très facilement Docker et Docker Compose à l'aide des commandes suivantes :

apt install curl -y
curl -fsSL https://get.docker.com | sh

Attention, lors de l'utilisation de ce script il peut en résulter des mises à jour de versions majeures inattendues de certains paquets. Testez toujours les mises à jour dans un environnement de test avant de les déployer sur vos systèmes de production.

Tester l'installation

docker --version

Exemple pratique

Après avoir installé Docker sur une machine Debian en utilisant la procédure recommandée sur le site officiel de Docker https://docs.docker.com/engine/install/debian/, nous allons télécharger une image simple appelée hello-world et créer notre 1er conteneur.

Pour cela, il suffit de saisir la commande :

docker run hello-world

Cela va :

  • créer un conteneur à partir de l'image hello-world
  • et afficher un message de bienvenue.

Ce qui confirme que votre installation de Docker est réussie et opérationnelle.

Test de mémorisation/compréhension


Que représente une image Docker ?


Quelle commande permet de lancer un conteneur Docker ?


Pourquoi Docker est-il important pour les administrateurs systèmes ?


Pourquoi Docker est-il important pour les développeurs ?


Quelle commande utilisez-vous pour vérifier que Docker a été installé correctement sur votre système Debian?


Quel est le principal avantage des conteneurs Docker par rapport aux machines virtuelles en termes de démarrage?


Quelle est la fonction principale du fichier 'docker-archive-keyring.gpg' dans le processus d'installation de Docker?


Quel est le rôle des images dans Docker?


Pourquoi est-il recommandé d'ajouter votre utilisateur au groupe 'docker' après l'installation de Docker?


Quelle commande Docker crée et démarre un conteneur à partir d'une image?


Dans quel scénario utiliseriez-vous Docker plutôt qu'une machine virtuelle?


Quel est l'avantage de l'utilisation des conteneurs Docker en termes de portabilité?


Quel fichier est modifié pour configurer le dépôt stable de Docker lors de l'installation sur Debian?



TP: "Première navigation avec Docker"

Objectif du TP Installer Docker sur votre système Debian, télécharger une image simple et exécuter un conteneur.

  1. Ouvrez une console sur votre système Debian.

  2. Mettez à jour la liste de vos paquets avec sudo apt update.

  3. Installez Docker en utilisant :

  4. Une fois l'installation terminée, téléchargez l'image hello-world en utilisant docker pull hello-world.

  5. Lancez un conteneur avec cette image via la commande docker run hello-world.

Vous devriez voir un message de bienvenue indiquant que Docker fonctionne correctement sur votre machine.