Introduction
Docker est une plateforme de conteneurisation qui permet d'empaqueter une application avec toutes ses dépendences dans un conteneur isolé et léger. Ce conteneur peut être exécuté de manière cohérente sur n'importe quel environnement résolvant ainsi les problèmes de compatibilité entre les systèmes de développement et de production.
Configuration Initiale
Installation via un Script Automatisé
Pour installer Docker sur un système Linux, vous pouvez utiliser le script officiel. Téléchargez-le d'abord, puis exécutez-le avec les privilèges nécessaires :
curl -fsSL https://get.docker.com -o setup_docker.sh
chmod +x setup_docker.sh
sudo ./setup_docker.sh
Configuration pour Ubuntu
Sur Ubuntu, une installation manuelle peut être réalisée en ajoutant le dépôt officiel de Docker. Suivez les étapes de documentation spécifique à votre version d'Ubuntu pour garantir une installation réussie.
Commandes Fondamentales
Gestion du Service Docker
Pour contrôler le daemon Docker, utilisez les commandes systemctl :
# Démarrer le service
sudo systemctl start docker
# Arrêter le service
sudo systemctl stop docker
# Activer au démarrage
sudo systemctl enable docker
# Redémarrer le service
sudo systemctl restart docker
Configuration des Miroirs d'Images
Pour accélérer le téléchargement des images, configurez un miroir dans le fichier daemon.json :
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://mirror.example.com"]
}
EOF
sudo systemctl restart docker
Commandes pour les Images
Lister et Rechercher des Images
# Afficher les images locales
docker image ls
# Rechercher une image sur Docker Hub
docker search httpd
# Télécharger une image spécifique
docker pull httpd:2.4-alpine
Construire des Images
# Construire une image à partir d'un Dockerfile
docker build -t mon-app:v1.2 -f Dockerfile.dev .
# Construire sans cache
docker build --no-cache -t mon-app:latest .
Gérer les Images
# Supprimer une image
docker image rm httpd:2.4
# Nettoyer les images inutilisées
docker image prune -a
Sauvegarder et Charger des Images
# Sauvegarder une image en fichier tar
docker save -o sauvegarde.tar mon-app:v1.2
# Charger une image depuis un fichier tar
docker load -i sauvegarde.tar
Commandes pour les Conteneurs
Créer et Exécuter des Conteneurs
# Lancer un conteneur en mode interactif
docker run -it --name mon-conteneur alpine sh
# Lancer un conteneur en arrière-plan avec port mappé
docker run -d -p 8080:80 --name web-server httpd
# Lancer avec un volume monté
docker run -v /chemin/hote:/chemin/conteneur --name data-app nginx
Gérer le Cycle de Vie des Conteneurs
# Démarrer un conteneur arrêté
docker start mon-conteneur
# Arrêter un conteneur
docker stop mon-conteneur
# Supprimer un conteneur
docker container rm mon-conteneur
Interagir avec les Conteneurs
# Accéder au shell d'un conteneur en cours d'exécution
docker exec -it mon-conteneur /bin/bash
# Copier des fichiers depuis/vers un conteneur
docker cp mon-conteneur:/chemin/fichier.txt ./local
Surveiller les Conteneurs
# Voir les logs en temps réel
docker logs -f mon-conteneur
# Afficher l'utilisation des ressources
docker stats mon-conteneur
Réseaux Docker
Créer et Gérer des Réseaux
# Créer un réseau personnalisé
docker network create --driver bridge mon-reseau
# Connecter un conteneur à un réseau
docker network connect mon-reseau mon-conteneur
# Déconnecter un conteneur d'un réseau
docker network disconnect mon-reseau mon-conteneur
Lancer des Conteneurs dans un Réseau Spécifique
# Démarrer un conteneur connecté à un réseau
docker run -d --network mon-reseau --name app-backend node:16
# Attribuer une IP statique
docker run -d --network mon-reseau --ip 172.18.0.10 --name app-frontend nginx
Volumes de Données
Créer et Utiliser des Volumes
# Créer un volume nommé
docker volume create donnees-app
# Monter un volume dans un conteneur
docker run -d -v donnees-app:/var/lib/data --name db postgres:13
# Monter un répertoire hôte
docker run -v $(pwd)/config:/etc/app/config:ro --name app-config alpine
Sauvegarder et Restaurer des Volumes
# Sauvegarder le contenu d'un volume
docker run --rm -v donnees-app:/source -v $(pwd):/backup alpine tar cvf /backup/archiv.tar -C /source ./
# Restaurer un volume depuis une sauvegarde
docker run --rm -v donnees-app:/cible -v $(pwd):/backup alpine tar xvf /backup/archiv.tar -C /cible