Docker - Conteneurs et Hôtes

Bonjour, les passionnés de technologie en herbe ! Je suis ravi de vous accompanyer dans cette aventure Docker. En tant que votre enseignant virtuel avec des années d'expérience, je vais vous guider à travers le monde fascinant des conteneurs et des hôtes. Ne vous inquiétez pas si vous êtes nouveau dans la programmation - nous allons commencer par les bases et monter en compétences petit à petit. Mettons-nous à l'eau !

Docker - Container & Hosts

Images Docker

Imaginez que vous préparez vos valises pour un voyage. Vous créeriez une liste de tout ce dont vous avez besoin, n'est-ce pas ? Une image Docker, c'est exactement ça - un plan de tout ce dont un conteneur a besoin pour fonctionner. C'est comme une recette pour votre application, incluant le code, le runtime, les bibliothèques et les outils système.

Créer Votre Première Image Docker

Créons une image Docker simple pour une application "Hello, World!" :

# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
CMD ["python", "hello.py"]

Décomposons cela :

  1. FROM python:3.9-slim : C'est comme dire, "Je veux commencer avec un environnement Python 3.9 minimal."
  2. WORKDIR /app : Nous configurons notre espace de travail, comme créer un nouveau dossier pour notre projet.
  3. COPY . /app : Nous copions nos fichiers locaux dans le conteneur.
  4. CMD ["python", "hello.py"] : C'est la commande qui sera exécutée lorsque nous démarrons le conteneur.

Pour construire cette image, nous exécuterions :

docker build -t my-hello-world .

Exécuter un Conteneur

Maintenant que nous avons notre image, mettons-la en marche ! Exécuter un conteneur, c'est comme démarrer un ordinateur virtuel pré-chargé avec votre application.

Exécution de Base du Conteneur

docker run my-hello-world

Cette commande démarrera un conteneur basé sur notre image my-hello-world et exécutera le script hello.py.

Mode Interactif

Parfois, vous souhaitez interagir avec votre conteneur. C'est comme ouvrir un terminal directement à l'intérieur du conteneur :

docker run -it my-hello-world /bin/bash

Les flags -it rendent le conteneur interactif, et /bin/bash démarre un shell bash.

Lister Tous les Conteneurs

En travaillant avec Docker, vous créerez plusieurs conteneurs. Il est important de les suivre. Pensez à cela comme vérifier quelles applications sont en cours d'exécution sur votre ordinateur.

docker ps

Cette commande affiche tous les conteneurs en cours d'exécution. Pour voir tous les conteneurs, y compris ceux arrêtés :

docker ps -a

Voici un tableau pratique des options de docker ps :

Option Description
-a, --all Afficher tous les conteneurs (par défaut, affiche seulement les conteneurs en cours d'exécution)
-q, --quiet Afficher uniquement les IDs des conteneurs
-s, --size Afficher les tailles totales des fichiers
--format Afficher les conteneurs de manière formatée en utilisant un modèle Go

Arrêter un Conteneur

Comme fermer une application sur votre ordinateur, vous pouvez arrêter un conteneur Docker lorsque vous avez terminé.

Arrêt Gracieux

docker stop <container_id>

Cela envoie un signal SIGTERM, permettant au conteneur de s'arrêter en douceur.

Arrêt Forcé

docker kill <container_id>

C'est comme forcer la fermeture d'une application. Utilisez-le lorsque docker stop ne fonctionne pas.

Supprimer un Conteneur

Après avoir arrêté un conteneur, vous pourriez vouloir le supprimer complètement :

docker rm <container_id>

Astuce pro : Vous pouvez combiner l'arrêt et la suppression en une seule commande :

docker rm -f <container_id>

Conclusion

Félicitations ! Vous avez fait vos premiers pas dans le monde des conteneurs et des hôtes Docker. Souvenez-vous, travailler avec Docker, c'est comme gérer une flotte de petits ordinateurs spécialisés. Chaque conteneur est un environnement autonome, prêt à exécuter votre application de manière cohérente sur n'importe quel système.

Pour conclure, voici une analogie amusante : Les conteneurs Docker sont comme des food trucks. Chaque truck (conteneur) a tout ce qu'il faut pour préparer et servir sa spécialité (exécuter votre application). Vous pouvez facilement déplacer ces trucks, les démarrer ou les ranger selon vos besoins.

Dans notre prochaine leçon, nous plongerons plus profondément dans le réseautage Docker et la persistance des données. Jusque-là, bon containerizing !

Credits: Image by storyset