Installation et Configuration de Docker sur Linux
Guide complet pour installer Docker, créer des conteneurs et gérer vos applications avec la conteneurisation moderne.
Docker est une plateforme de conteneurisation qui permet d'empaqueter des applications avec leurs dépendances dans des conteneurs légers et portables.
Prérequis
- Système d'exploitation : Distribution Linux supportée (Ubuntu 18.04+, Debian 9+, CentOS 7+)
- Privilèges : Accès root ou privilèges sudo
- Ressources : Minimum 2GB RAM, 20GB d'espace disque
- Réseau : Connexion Internet active pour télécharger les images
Installation de Docker
Étape 1 : Mise à jour du système
Commencez par mettre à jour votre système pour vous assurer d'avoir les dernières versions des paquets :
sudo apt update && sudo apt upgrade -y
Étape 2 : Installation des dépendances
Installez les paquets nécessaires pour permettre à APT d'utiliser des dépôts via HTTPS :
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
Étape 3 : Ajout de la clé GPG officielle
Ajoutez la clé GPG officielle de Docker pour vérifier l'authenticité des paquets :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Étape 4 : Configuration du dépôt Docker
Ajoutez le dépôt officiel Docker à vos sources APT :
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Étape 5 : Installation de Docker Engine
Mettez à jour l'index des paquets et installez Docker Engine :
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Étape 6 : Vérification de l'installation
Vérifiez que Docker est correctement installé et démarré :
sudo systemctl status docker
docker --version
Si vous voyez la version de Docker s'afficher, l'installation s'est déroulée correctement !
Configuration post-installation
Exécution sans sudo
Par défaut, Docker nécessite des privilèges root. Pour permettre à votre utilisateur d'exécuter Docker sans sudo :
# Ajouter votre utilisateur au groupe docker
sudo usermod -aG docker $USER
# Redémarrer la session ou exécuter
newgrp docker
Ajouter un utilisateur au groupe docker équivaut à lui donner des privilèges root. Utilisez cette fonctionnalité avec précaution.
Configuration du démon Docker
Créez un fichier de configuration pour personnaliser le comportement de Docker :
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <
Redémarrez Docker pour appliquer la configuration :
sudo systemctl restart docker
Premier test avec Docker
Test de base
Testez votre installation avec l'image hello-world :
docker run hello-world
Exécution d'un conteneur interactif
Lancez un conteneur Ubuntu interactif :
docker run -it ubuntu:latest bash
Gestion des images Docker
Rechercher des images
# Rechercher une image sur Docker Hub
docker search nginx
# Télécharger une image
docker pull nginx:latest
# Lister les images locales
docker images
Supprimer des images
# Supprimer une image spécifique
docker rmi nginx:latest
# Supprimer les images non utilisées
docker image prune
# Supprimer toutes les images non utilisées
docker image prune -a
Gestion des conteneurs
Commandes de base
# Lancer un conteneur en arrière-plan
docker run -d --name mon-nginx nginx
# Lister les conteneurs actifs
docker ps
# Lister tous les conteneurs
docker ps -a
# Arrêter un conteneur
docker stop mon-nginx
# Redémarrer un conteneur
docker start mon-nginx
# Supprimer un conteneur
docker rm mon-nginx
Exemple pratique : Serveur web Nginx
# Lancer Nginx avec port mapping
docker run -d \
--name serveur-web \
-p 8080:80 \
-v $(pwd)/html:/usr/share/nginx/html:ro \
nginx:latest
# Vérifier que le serveur fonctionne
curl http://localhost:8080
Création d'images personnalisées
Dockerfile basique
Créez un fichier Dockerfile pour construire votre propre image :
# Utiliser une image de base
FROM ubuntu:20.04
# Définir le mainteneur
LABEL maintainer="votre-email@exemple.com"
# Mettre à jour et installer des paquets
RUN apt-get update && apt-get install -y \
nginx \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copier des fichiers de configuration
COPY nginx.conf /etc/nginx/nginx.conf
COPY index.html /var/www/html/
# Exposer le port
EXPOSE 80
# Définir la commande par défaut
CMD ["nginx", "-g", "daemon off;"]
Construction de l'image
# Construire l'image
docker build -t mon-serveur:1.0 .
# Lancer un conteneur depuis votre image
docker run -d -p 8080:80 --name mon-app mon-serveur:1.0
Docker Compose
Installation de Docker Compose
Docker Compose est maintenant inclus comme plugin. Vérifiez l'installation :
docker compose version
Exemple de docker-compose.yml
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
database:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: motdepasse_securise
MYSQL_DATABASE: app_db
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
db_data:
Utilisation de Docker Compose
# Lancer les services
docker compose up -d
# Voir les logs
docker compose logs
# Arrêter les services
docker compose down
# Arrêter et supprimer les volumes
docker compose down -v
Bonnes pratiques de sécurité
Sécurisation du démon Docker
- Utilisateurs non-root : Évitez d'exécuter des processus en tant que root dans les conteneurs
- Images officielles : Privilégiez les images officielles et vérifiées
- Mises à jour : Maintenez Docker et vos images à jour
- Ressources limitées : Limitez la mémoire et le CPU des conteneurs
Exemple de conteneur sécurisé
docker run -d \
--name app-securisee \
--user 1000:1000 \
--memory="512m" \
--cpus="0.5" \
--read-only \
--tmpfs /tmp \
nginx:latest
Scan de sécurité
# Scanner une image pour les vulnérabilités
docker scout quickview nginx:latest
Surveillance et maintenance
Monitoring des ressources
# Statistiques en temps réel
docker stats
# Informations système Docker
docker system df
# Nettoyage automatique
docker system prune
# Nettoyage complet (attention !)
docker system prune -a --volumes
Logs et débogage
# Voir les logs d'un conteneur
docker logs mon-conteneur
# Suivre les logs en temps réel
docker logs -f mon-conteneur
# Exécuter une commande dans un conteneur
docker exec -it mon-conteneur bash
Utilisez
docker system prune régulièrement pour nettoyer les ressources inutilisées et économiser de l'espace disque.
Conclusion
Docker est maintenant installé et configuré sur votre système Linux. Vous disposez des connaissances de base pour :
- Gérer des images et conteneurs Docker
- Créer vos propres images avec Dockerfile
- Orchestrer des applications multi-conteneurs avec Docker Compose
- Appliquer les bonnes pratiques de sécurité
- Surveiller et maintenir votre environnement Docker
Docker révolutionne le déploiement d'applications en offrant une solution portable, légère et cohérente pour tous vos environnements de développement et de production.