Virtualization
Difficulté: Intermediate

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.

Retour aux tutoriels
À propos de Docker
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
Installation réussie
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
Attention sécurité
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
Conseil pro
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.