Table of Contents
- Qu'est-ce que Docker ?
- Comment installer Docker ?
- Premier conteneur Docker : Hello World
- Commandes Docker essentielles
- Créer une image Docker personnalisée avec Dockerfile
- Docker Compose : gérer plusieurs conteneurs
- Quels sont les avantages de Docker ?
- Comment déployer une application avec Docker ?
- Ressources pour aller plus loin
- FAQs
Docker : passez de débutant à conscient en moins d'une heure
Docker a complètement révolutionné la manière dont nous développons et déployons nos applications. Fini les problèmes d'environnements incompatibles et le fameux "ça marche sur ma machine". Grâce à la conteneurisation, Docker permet de créer des environnements reproductibles, portables et isolés. Que vous soyez développeur, administrateur système ou en transition vers le DevOps, maîtriser Docker est devenu indispensable. Ce docker tutorial complet vous accompagne pas à pas : vous apprendrez à installer Docker, créer vos premiers conteneurs, utiliser les commandes essentielles, orchestrer des applications multi-conteneurs avec Docker Compose, et déployer en production. En moins d'une heure, ce docker tutorial vous fera passer de débutant à conscient des fondamentaux essentiels de cette technologie incontournable.
🎓 Devenez un professionnel DevOps recherché avec notre formation administrateur réseau → Maîtrisez Docker, Kubernetes, Ansible et l'automatisation
Qu'est-ce que Docker ?
Définition et principes
Docker est une plateforme open source de conteneurisation qui permet d'empaqueter une application avec toutes ses dépendances dans un conteneur léger et portable. Un conteneur Docker est une unité d'exécution standardisée contenant tout le nécessaire pour faire fonctionner votre code : bibliothèques, fichiers système, configuration et runtime.
La différence fondamentale avec les machines virtuelles traditionnelles est cruciale à comprendre dans ce docker tutorial. Une VM embarque un système d'exploitation complet, ce qui la rend lourde et lente au démarrage. Un conteneur Docker, lui, partage le kernel du système hôte, ce qui le rend extrêmement léger et rapide à démarrer.
Pourquoi Docker est révolutionnaire :
- Portabilité totale : "Build once, run anywhere". Votre conteneur s'exécutera de manière identique sur votre machine de développement, en test et en production
- Isolation complète : chaque conteneur est totalement indépendant, évitant les conflits de dépendances
- Efficacité maximale : un conteneur démarre en quelques secondes contre plusieurs minutes pour une VM
- Reproductibilité garantie : le même environnement partout, éliminant les surprises lors du déploiement
Architecture Docker
Pour bien comprendre Docker, il faut connaître ses composants principaux :
Docker Engine est le moteur qui exécute vos conteneurs. C'est le cœur du système qui gère la création, l'exécution et la surveillance des containers.
Docker Client est l'interface en ligne de commande que vous utilisez pour communiquer avec le Docker Engine. Toutes vos commandes docker run, docker build passent par cette interface.
Docker Hub est le registry public où sont stockées des milliers d'images Docker officielles et communautaires. C'est comme un GitHub pour les images de conteneurs.
Docker Desktop est l'application complète pour Windows et macOS qui inclut tous les outils nécessaires dans une interface graphique conviviale.
Concepts clés à retenir :
- Image : un template en lecture seule servant de base pour créer des conteneurs. C'est comme un snapshot figé de votre application
- Container : une instance en cours d'exécution d'une image. C'est votre application qui tourne réellement
- Dockerfile : un fichier de configuration décrivant comment construire une image Docker
- Docker Compose : un outil puissant pour définir et gérer des applications composées de plusieurs conteneurs
Comment installer Docker ?
Installation sur Windows
Pour installer Docker sur Windows, vous aurez besoin de Windows 10/11 Pro, Enterprise ou Education, ainsi que WSL 2 (Windows Subsystem for Linux) activé. Cette première étape de notre docker tutorial est essentielle pour bien démarrer.
Étapes d'installation :
- Téléchargez Docker Desktop depuis docker.com/products/docker-desktop
- Exécutez le fichier d'installation téléchargé
- Redémarrez votre ordinateur pour finaliser l'installation
- Lancez Docker Desktop depuis le menu Démarrer
- Vérifiez que l'installation fonctionne correctement :
docker --version
docker run hello-worldSi tout est correctement configuré, vous verrez un message de bienvenue confirmant que Docker fonctionne.
Installation sur macOS
L'installation sur Mac est encore plus simple :
- Téléchargez Docker Desktop pour Mac depuis le site officiel
- Glissez-déposez Docker.app dans votre dossier Applications
- Lancez Docker Desktop
- Vérifiez l'installation avec les commandes suivantes :
docker --version
docker run hello-worldInstallation sur Linux (Ubuntu)
Pour installer Docker Engine sur Ubuntu, suivez ces étapes :
# Mettre à jour les packages existants
sudo apt-get update
# Installer les dépendances nécessaires
sudo apt-get install ca-certificates curl gnupg
# Ajouter la clé GPG officielle de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Ajouter le repository Docker à vos sources APT
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installer Docker Engine, le CLI et containerd
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# Vérifier que Docker est correctement installé
sudo docker run hello-worldPour utiliser Docker sans sudo (optionnel mais recommandé) :
sudo usermod -aG docker $USER
newgrp dockerVous pouvez maintenant exécuter des commandes Docker sans préfixe sudo.
Premier conteneur Docker : Hello World
Comprendre docker run
La commande la plus basique pour démarrer avec Docker est docker run. Dans cette partie du docker tutorial, nous allons créer notre premier conteneur. Essayons-la :
docker run hello-worldQue se passe-t-il exactement en coulisses ?
- Docker recherche l'image hello-world sur votre machine locale
- Ne la trouvant pas, il la télécharge automatiquement depuis Docker Hub
- Docker crée un nouveau container à partir de cette image
- Le container s'exécute, affiche un message de bienvenue, puis s'arrête
C'est un workflow simple mais qui illustre parfaitement le fonctionnement de Docker : pull image, create container, run, stop.
Votre premier conteneur interactif
Passons maintenant à quelque chose de plus interactif dans ce docker tutorial. Lançons un conteneur Ubuntu avec un terminal :
# Lancer un conteneur Ubuntu en mode interactif
docker run -it ubuntu bashVous êtes maintenant à l'intérieur d'un système Ubuntu totalement isolé. Vous pouvez installer des packages et expérimenter :
# À l'intérieur du conteneur Ubuntu
apt-get update
apt-get install -y curl
curl google.com
exitOptions expliquées :
-it: combine deux options pour créer une session interactive avec terminalubuntu: le nom de l'image Docker à utiliser comme basebash: la commande à exécuter à l'intérieur du conteneur
💼 Transformez votre CV avec des compétences DevOps ! Rejoignez notre formation administrateur réseau → Docker, CI/CD, Cloud et automatisation
Commandes Docker essentielles
Gestion des images
Maîtriser les images Docker est fondamental dans ce docker tutorial. Voici les commandes incontournables :
# Lister toutes les images présentes localement
docker images
# Télécharger une image depuis Docker Hub
docker pull nginx
# Supprimer une image locale
docker rmi nginx
# Construire une image personnalisée depuis un Dockerfile
docker build -t mon-app:v1 .
# Rechercher une image sur Docker Hub
docker search pythonGestion des conteneurs
Les conteneurs sont au cœur de Docker. Ces commandes vous permettront de les gérer efficacement :
# Lister les conteneurs actuellement en cours d'exécution
docker ps
# Lister tous les conteneurs (y compris ceux qui sont arrêtés)
docker ps -a
# Arrêter un conteneur en cours d'exécution
docker stop <container-id>
# Démarrer un conteneur précédemment arrêté
docker start <container-id>
# Supprimer définitivement un conteneur
docker rm <container-id>
# Consulter les logs d'un conteneur
docker logs <container-id>
# Exécuter une commande dans un conteneur déjà en cours
docker exec -it <container-id> bashExemple pratique : Serveur web Nginx
Mettons en pratique les concepts de ce docker tutorial avec un exemple concret. Lançons un serveur web Nginx :
# Lancer Nginx en mode détaché sur le port 8080
docker run -d -p 8080:80 --name mon-nginx nginx
# Vérifier que le conteneur tourne bien
docker ps
# Ouvrir votre navigateur sur http://localhost:8080
# Vous devriez voir la page d'accueil Nginx
# Consulter les logs du serveur
docker logs mon-nginx
# Arrêter et supprimer le conteneur
docker stop mon-nginx
docker rm mon-nginxOptions détaillées :
-d: mode détaché (background), le conteneur tourne en arrière-plan-p 8080:80: mappe le port 80 du conteneur vers le port 8080 de votre machine--name: donne un nom explicite à votre conteneur pour le retrouver facilement
Créer une image Docker personnalisée avec Dockerfile
Structure d'un Dockerfile
Un Dockerfile est un fichier texte contenant les instructions pour construire une image. Cette section cruciale de notre docker tutorial vous montre comment créer vos propres images personnalisées. Voici un exemple complet pour une application Node.js :
# Image de base légère avec Node.js
FROM node:18-alpine
# Définir le répertoire de travail dans le conteneur
WORKDIR /app
# Copier les fichiers de dépendances
COPY package*.json ./
# Installer les dépendances de l'application
RUN npm install
# Copier tout le code source de l'application
COPY . .
# Exposer le port sur lequel l'application écoute
EXPOSE 3000
# Commande à exécuter au démarrage du conteneur
CMD ["node", "server.js"]Instructions Dockerfile principales
Instruction Description Exemple FROM Définit l'image de base FROM ubuntu:22.04 WORKDIR Définit le répertoire de travail WORKDIR /app COPY Copie des fichiers de l'hôte vers le conteneur COPY . /app RUN Exécute une commande pendant la construction RUN npm install EXPOSE Déclare un port à exposer EXPOSE 3000 CMD Commande par défaut au lancement CMD ["python", "app.py"] ENV Définit une variable d'environnement ENV NODE_ENV=production
Construire et exécuter l'image
Une fois votre Dockerfile créé selon les instructions de ce docker tutorial, construisez et lancez votre image :
# Construire l'image avec un tag
docker build -t mon-app:1.0 .
# Vérifier que l'image a bien été créée
docker images
# Lancer un conteneur à partir de cette image
docker run -d -p 3000:3000 --name mon-app-container mon-app:1.0
# Tester que l'application répond
curl http://localhost:3000
# Consulter les logs de l'application
docker logs mon-app-containerLe point . à la fin de docker build indique que le Dockerfile se trouve dans le répertoire courant.
Docker Compose : gérer plusieurs conteneurs
Qu'est-ce que Docker Compose ?
Docker Compose est un outil puissant qui permet de définir et gérer des applications composées de plusieurs conteneurs. Cette partie avancée du docker tutorial vous montre comment orchestrer plusieurs services ensemble. Au lieu de lancer chaque conteneur manuellement, vous définissez toute votre architecture dans un fichier YAML.
Les cas d'usage typiques incluent :
- Une application web avec sa base de données
- Un backend API avec PostgreSQL et Redis pour le cache
- Un environnement de développement complet avec tous ses services
Exemple : Application web + PostgreSQL
Créez un fichier docker-compose.yml à la racine de votre projet. Cet exemple pratique du docker tutorial vous montre comment configurer une stack complète :
version: '3.8'
services:
# Service de l'application web
web:
build: .
ports:
- "5000:5000"
environment:
- DATABASE_URL=postgresql://user:password@db:5432/myapp
depends_on:
- db
volumes:
- ./app:/app
# Service de base de données PostgreSQL
db:
image: postgres:15-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:Ce fichier définit deux services qui communiquent entre eux. L'application web peut accéder à la base de données via le nom de service db.
Commandes Docker Compose
Gérez facilement votre stack multi-conteneurs :
# Démarrer tous les services en arrière-plan
docker-compose up -d
# Voir l'état de tous les services
docker-compose ps
# Consulter les logs de tous les services en temps réel
docker-compose logs -f
# Arrêter et supprimer tous les conteneurs
docker-compose down
# Reconstruire toutes les images
docker-compose build
# Redémarrer un service spécifique
docker-compose restart web⚡ Maîtrisez l'orchestration de conteneurs ! Notre formation administrateur réseau vous forme à Docker, Kubernetes et l'infrastructure moderne
Quels sont les avantages de Docker ?
Pour les développeurs
Docker transforme radicalement le quotidien des développeurs :
- Environnement standardisé : terminé le "ça marche sur ma machine". Si ça fonctionne dans un conteneur Docker, ça fonctionnera partout
- Rapidité exceptionnelle : un conteneur démarre en quelques secondes, contre plusieurs minutes pour une machine virtuelle
- Isolation parfaite : testez différentes versions de Node.js, Python ou PHP simultanément sans aucun conflit
- Collaboration facilitée : partagez vos environnements complets via Docker Hub avec toute votre équipe
Pour les DevOps/Ops
Les équipes opérationnelles bénéficient d'avantages majeurs :
- Déploiement simplifié : le même processus du développement à la production, sans surprise
- Scalabilité native : déployez facilement plusieurs instances de votre application pour gérer la charge
- Rollback instantané : revenez à une version précédente en quelques secondes en cas de problème
- Intégration CI/CD : Docker s'intègre parfaitement dans vos pipelines de déploiement automatisé
Pour l'entreprise
Au niveau business, Docker apporte une réelle valeur :
- Réduction des coûts : meilleure utilisation des ressources matérielles avec des conteneurs légers
- Time-to-market accéléré : déployez vos nouvelles fonctionnalités plus rapidement
- Portabilité totale : fonctionnez sur n'importe quel cloud (AWS, Azure, GCP), on-premise ou en hybride
- Architecture microservices : facilite la transition vers des architectures modernes et scalables
Tableau comparatif
Aspect Sans Docker Avec Docker Temps de setup Heures/Jours Minutes Portabilité Limitée aux environnements similaires Totale, fonctionne partout Isolation Difficile, conflits fréquents Native et garantie Ressources Lourdes (machines virtuelles) Légères (conteneurs) Déploiement Complexe et risqué Simplifié et reproductible
Comment déployer une application avec Docker ?
Workflow de déploiement complet
Cette section finale de notre docker tutorial vous guide à travers un workflow professionnel du développement au déploiement. Voici un processus complet du développement à la production :
1. Développement local :
# Créer le répertoire de votre projet
mkdir mon-projet && cd mon-projet
# Développer votre application...
# Créer votre Dockerfile et docker-compose.yml
# Tester localement avec Docker Compose
docker-compose up2. Construire et tagger l'image :
# Build avec une version précise
docker build -t monapp:1.0.0 .
# Tagger pour Docker Hub (remplacez username par votre nom d'utilisateur)
docker tag monapp:1.0.0 username/monapp:1.0.03. Pousser vers Docker Hub :
# Authentification sur Docker Hub
docker login
# Push de l'image sur le registry
docker push username/monapp:1.0.04. Déployer sur le serveur de production :
# Sur votre serveur de production, récupérer l'image
docker pull username/monapp:1.0.0
# Lancer le conteneur en production
docker run -d -p 80:3000 --name production-app username/monapp:1.0.0Bonnes pratiques de déploiement
Ce docker tutorial ne serait pas complet sans aborder les bonnes pratiques essentielles pour un déploiement professionnel.
✅ Utilisez des images légères
Privilégiez les versions Alpine qui sont beaucoup plus compactes :
FROM node:18-alpine # Au lieu de node:18Utilisez des multi-stage builds pour réduire la taille finale de vos images en supprimant les dépendances de build.
✅ Gérez les variables d'environnement proprement
Ne codez jamais de configurations sensibles en dur. Utilisez des variables d'environnement :
docker run -e DATABASE_URL=postgresql://... -e API_KEY=secret mon-app✅ Implémentez des health checks
Permettez à Docker de vérifier la santé de votre application :
HEALTHCHECK \
CMD curl -f http://localhost:3000/health || exit 1✅ Persistez les données avec des volumes
Ne stockez jamais de données importantes dans le conteneur lui-même :
docker run -v /data/postgres:/var/lib/postgresql/data postgres✅ Centralisez vos logs
Utilisez docker logs pour le debugging et intégrez avec des solutions comme ELK Stack ou CloudWatch pour la production.
Intégration avec CI/CD
Exemple de pipeline GitLab CI pour automatiser le workflow complet :
stages:
- build
- test
- deploy
build:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
test:
stage: test
script:
- docker run $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA npm test
deploy:
stage: deploy
script:
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker-compose up -d
only:
- mainCe pipeline build, teste et déploie automatiquement votre application à chaque push sur la branche main. Pour aller plus loin dans l'automatisation et découvrir les opportunités professionnelles, consultez notre article sur les 10 domaines de l'informatique les plus prometteurs.
Ressources pour aller plus loin
Docker Hub et images officielles
Docker Hub (hub.docker.com) est votre bibliothèque centrale d'images prêtes à l'emploi. Maintenant que vous avez suivi ce docker tutorial, vous pouvez explorer des milliers d'images pour enrichir vos projets. Voici les images les plus populaires et utiles :
- nginx : serveur web haute performance et reverse proxy
- postgres, mysql : bases de données relationnelles
- redis : cache en mémoire ultra-rapide
- node, python, php : environnements pour différents langages de programmation
- ubuntu, alpine : distributions Linux de base
Privilégiez toujours les images officielles marquées "Official Image" pour la sécurité et la fiabilité.
Documentation et communauté
Pour approfondir vos connaissances après ce docker tutorial :
- Documentation officielle : docs.docker.com offre des guides complets et des références API
- Docker Playground : labs.play-with-docker.com pour expérimenter Docker directement dans votre navigateur
- Awesome Docker : liste exhaustive de ressources, outils et tutoriels sur GitHub
Prochaines étapes
Une fois ce docker tutorial maîtrisé, voici les compétences naturelles à développer :
- Kubernetes : orchestration de conteneurs à grande échelle pour gérer des centaines de services
- Docker Swarm : clustering Docker natif, plus simple que Kubernetes pour commencer
- Security : sécurisation des images, scan de vulnérabilités, gestion des secrets
- Monitoring : Prometheus et Grafana pour surveiller vos conteneurs en production
🚀 Faites décoller votre carrière IT ! Rejoignez notre formation administrateur réseau et maîtrisez Docker, Kubernetes, Ansible et les technologies DevOps → Devenez un expert recherché avec un salaire premium
Retrouver de nombreuses vidéos de cours sur la chaîne Youtube Formip :
Pour approfondir vos compétences en sécurité des applications web, découvrez comment utiliser efficacement Burp Suite Proxy pour le pentest web.
FAQs
Qu'est-ce que Docker ?
Docker est une plateforme open source de conteneurisation qui permet d'empaqueter une application avec toutes ses dépendances dans un conteneur léger et portable. Contrairement aux machines virtuelles qui nécessitent un système d'exploitation complet, les conteneurs Docker partagent le kernel de l'hôte, ce qui les rend ultra-rapides à démarrer (quelques secondes) et très économes en ressources. Docker garantit que votre application fonctionnera de manière identique en développement, en test et en production, éliminant ainsi le fameux problème "ça marche sur ma machine".
Comment installer Docker ?
L'installation de Docker varie selon votre système d'exploitation. Sur Windows (10/11 Pro ou supérieur), téléchargez Docker Desktop depuis docker.com, exécutez l'installateur et redémarrez votre ordinateur. Sur macOS, téléchargez Docker Desktop pour Mac et glissez l'application dans votre dossier Applications. Sur Linux Ubuntu, utilisez les commandes apt-get pour installer docker-ce après avoir ajouté le repository officiel. Dans tous les cas, vérifiez votre installation avec docker --version et testez avec docker run hello-world. L'installation complète prend généralement 10 à 15 minutes.
Comment créer un conteneur Docker ?
Pour créer un conteneur Docker, utilisez la commande docker run suivie du nom de l'image. Par exemple, docker run -d -p 8080:80 nginx crée un conteneur Nginx en arrière-plan et mappe le port 80 du conteneur vers le port 8080 de votre machine. Les options courantes incluent -d (mode détaché), -p (mapping de ports), --name (nommer le conteneur), et -v (monter des volumes). Pour un conteneur interactif, utilisez -it avec bash : docker run -it ubuntu bash. Vous pouvez également créer des conteneurs à partir de vos propres images personnalisées construites avec un Dockerfile.
Comment utiliser Docker ?
L'utilisation de Docker commence par la compréhension de quelques commandes essentielles. docker pull télécharge des images depuis Docker Hub, docker run lance un conteneur, docker ps liste les conteneurs actifs, docker stop arrête un conteneur, et docker logs affiche les logs. Pour créer vos propres images, écrivez un Dockerfile décrivant votre application, puis utilisez docker build -t nom-image . pour la construire. Pour orchestrer plusieurs conteneurs, créez un fichier docker-compose.yml et utilisez docker-compose up. La pratique régulière de ces commandes vous rendra rapidement autonome.
Quels sont les avantages de Docker ?
Docker offre de nombreux avantages majeurs. La portabilité : votre application fonctionne partout de manière identique (développement, test, production). La rapidité : les conteneurs démarrent en quelques secondes contre plusieurs minutes pour les VMs. L'isolation : chaque conteneur est indépendant, évitant les conflits de dépendances. L'efficacité : utilisation optimale des ressources système. La reproductibilité : environnements garantis identiques pour toute l'équipe. Le déploiement simplifié : processus standardisé du développement à la production. La scalabilité : déployez facilement plusieurs instances de votre application. Ces avantages expliquent pourquoi Docker est devenu incontournable chez Netflix, Spotify, Uber et des milliers d'entreprises.
Comment gérer plusieurs conteneurs ?
Pour gérer plusieurs conteneurs, Docker Compose est l'outil idéal. Créez un fichier docker-compose.yml définissant tous vos services (application web, base de données, cache Redis, etc.) avec leurs configurations. Un simple docker-compose up -d lance toute votre stack, tandis que docker-compose down arrête tout. Docker Compose gère automatiquement le réseau entre conteneurs, les dépendances de démarrage avec depends_on, et les volumes pour la persistance des données. Pour des environnements plus complexes en production, vous pouvez évoluer vers Kubernetes qui orchestre des centaines de conteneurs à grande échelle.
Comment déployer une application avec Docker ?
Le déploiement d'une application Docker suit un workflow structuré. D'abord, construisez votre image avec docker build -t mon-app:1.0 . puis taguez-la pour votre registry : docker tag mon-app:1.0 username/mon-app:1.0. Ensuite, poussez l'image vers Docker Hub avec docker push username/mon-app:1.0. Sur votre serveur de production, récupérez l'image avec docker pull et lancez-la avec docker run -d -p 80:3000 username/mon-app:1.0. Pour un déploiement professionnel, intégrez Docker dans un pipeline CI/CD (GitLab CI, Jenkins, GitHub Actions) qui automatise les étapes de build, test et déploiement. Utilisez des variables d'environnement pour les configurations sensibles et des volumes pour persister les données importantes.