Docker & Portainer — installation et gestion des conteneurs
Introduction
Docker permet de déployer des applications dans des conteneurs isolés, reproductibles et faciles à gérer. Portainer ajoute une interface web pour administrer ces conteneurs sans passer uniquement par la ligne de commande. Cet article documente l'installation de Docker Engine et de Portainer sur un VPS Ubuntu, ainsi que les bonnes pratiques de gestion au quotidien.
1. Installation de Docker Engine
Prérequis
apt update && apt upgrade -y
apt install ca-certificates curl gnupg -y
Ajout du dépôt officiel Docker
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
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" | tee /etc/apt/sources.list.d/docker.list > /dev/null
Installation
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Vérification
docker version
docker run hello-world
2. Concepts essentiels
Images vs conteneurs
- Image : modèle immuable (ex.
nginx:latest,ghost:alpine) - Conteneur : instance en cours d'exécution d'une image
- Volume : stockage persistant monté dans un conteneur
- Réseau : canal de communication entre conteneurs
Commandes de base
docker ps # conteneurs actifs
docker ps -a # tous les conteneurs
docker images # images locales
docker logs <nom_conteneur> # logs d'un conteneur
docker exec -it <nom> bash # shell dans un conteneur
docker stop <nom> && docker rm <nom> # arrêter et supprimer
3. docker-compose
Tous les services sont définis dans des fichiers docker-compose.yml pour garantir la reproductibilité.
Exemple de structure
services:
app:
image: ghost:alpine
container_name: ghost
restart: unless-stopped
environment:
- NODE_ENV=production
volumes:
- ./data:/var/lib/ghost/content
networks:
- web
networks:
web:
external: true
Commandes compose
docker compose up -d # démarrer en arrière-plan
docker compose down # arrêter et supprimer les conteneurs
docker compose pull # mettre à jour les images
docker compose logs -f # suivre les logs
4. Portainer
Portainer s'installe lui-même comme un conteneur Docker.
Création du volume et démarrage
docker volume create portainer_data
docker run -d \
--name portainer \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
-p 8000:8000 -p 9443:9443 \
portainer/portainer-ce:latest
L'interface est ensuite accessible sur
https://<DOMAINE>:9443ou via un reverse proxy (voir article dédié Nginx).
Fonctionnalités utiles
- Vue d'ensemble de tous les conteneurs, images, volumes
- Démarrage / arrêt / redémarrage en un clic
- Consultation des logs en temps réel
- Déploiement de stacks via l'interface (équivalent docker-compose)
- Gestion des réseaux et volumes
Référence rapide
| Action | Commande |
|---|---|
| Lister conteneurs actifs | docker ps |
| Logs d'un conteneur | docker logs -f <nom> |
| Shell dans un conteneur | docker exec -it <nom> bash |
| Redémarrer un conteneur | docker restart <nom> |
| Nettoyer les ressources inutilisées | docker system prune -a |
| Démarrer une stack | docker compose up -d |
Conclusion
Docker et Portainer forment un duo complémentaire : Docker gère l'exécution des conteneurs en ligne de commande, Portainer apporte la visibilité et le contrôle via une interface web. L'étape suivante est la mise en place d'un reverse proxy Nginx pour exposer les services de manière sécurisée (voir article dédié).