Portainer : gérer Docker depuis le navigateur
Une interface web qui remplace la moitié des commandes docker que vous tapez chaque jour — containers, images, volumes, stacks, logs, tout depuis le navigateur.
docker ps, docker logs, docker exec -it, docker volume ls — ces commandes fonctionnent, mais sur un serveur avec dix containers actifs, naviguer en CLI devient fastidieux. Portainer est une interface web qui expose toutes les fonctions Docker dans un dashboard. Pas un remplacement de la ligne de commande, mais un complément qui fait gagner du temps sur les tâches de supervision et de debugging.
Installation
Portainer tourne lui-même dans un container Docker. Deux minutes pour l'installer.
# Créer le volume de persistance (stocke la config Portainer)
docker volume create portainer_data
# Lancer Portainer
docker run -d \
--name portainer \
--restart=always \
-p 9443:9443 \
-p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest-v /var/run/docker.sock:/var/run/docker.sock est ce qui donne à Portainer l'accès au daemon Docker — c'est le même mécanisme que docker-in-docker. Portainer lit et écrit sur le socket Docker local.
Accédez à https://votre-ip:9443 (HTTPS avec certificat auto-signé) ou http://votre-ip:9000 pour HTTP. Premier accès : créez votre mot de passe admin, sélectionnez Local environment.
Ce que vous pouvez faire depuis l'interface
Containers
La vue principale liste tous les containers avec leur statut, image, ports exposés, et les actions rapides : start, stop, restart, kill, supprimer. Un clic sur un container ouvre son détail :
- Logs : équivalent de
docker logs -f, avec filtrage par mots-clés - Console : terminal interactif dans le container —
docker exec -itdepuis le navigateur - Stats : CPU, mémoire, réseau en temps réel
- Inspect : le JSON complet de
docker inspect
La console interactrice est particulièrement utile pour déboguer un container sans SSH — accès direct au shell sans quitter le navigateur.
Images
Liste toutes les images locales avec leur taille et leur date de création. Depuis là, vous pouvez :
- Pull une nouvelle image (
docker pull) - Supprimer les images non utilisées
- Consulter les layers de chaque image
Volumes
Vue de tous les volumes avec leur driver et point de montage. Pour les volumes de bases de données, Portainer permet de parcourir les fichiers du volume directement depuis le navigateur — utile pour vérifier que les données persistent correctement.
Réseaux
Visualisation des réseaux Docker et des containers attachés à chacun. Créer un réseau custom, connecter ou déconnecter un container — sans mémoriser les options de docker network.
Stacks — Docker Compose dans Portainer
La fonctionnalité la plus utile pour déployer des services multi-containers. Une Stack Portainer est un docker-compose.yml déployé depuis l'interface.
# Coller directement dans l'éditeur Stack de Portainer
version: '3.8'
services:
app:
image: node:20-alpine
working_dir: /app
volumes:
- ./:/app
command: npm start
environment:
- NODE_ENV=production
- DATABASE_URL=${DATABASE_URL}
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:16-alpine
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=myapp
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
postgres_data:Trois options pour déployer une Stack :
- Web editor : collez votre
docker-compose.ymldirectement dans l'interface - Git repository : Portainer pull automatiquement depuis un repo Git
- Upload : uploader un fichier
Les variables d'environnement (les ${VAR}) se définissent dans un champ dédié — équivalent du fichier .env de Docker Compose.
Portainer sur un serveur distant
Par défaut, Portainer gère l'environnement Docker local. Pour gérer un serveur distant, deux options :
Agent Portainer (recommandé) :
# Sur le serveur distant
docker run -d \
--name portainer_agent \
--restart=always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:latestDans Portainer, ajoutez un nouvel environnement → Agent → entrez l'IP et le port 9001. Portainer se connecte à l'agent et vous donne accès au Docker distant exactement comme en local.
SSH : Portainer peut aussi se connecter via SSH sans installer l'agent — mais la connexion est plus lente.
Avec plusieurs serveurs, le dashboard Portainer liste les environnements en haut — vous basculez entre eux en un clic.
Sécurité
Portainer expose le socket Docker — c'est un accès root au serveur. Quelques règles :
# Ne jamais exposer le port 9443/9000 sur Internet sans authentification forte
# Filtrer avec UFW
sudo ufw allow from VOTRE_IP to any port 9443
sudo ufw deny 9443En production, mettez Portainer derrière un reverse proxy Nginx ou Traefik avec authentification basique ou SSO, plutôt que de l'exposer directement.
Portainer CE (Community Edition) gère l'authentification par utilisateurs et rôles — vous pouvez créer des comptes en lecture seule pour que les membres de l'équipe consultent les logs sans pouvoir modifier les containers.
Portainer CE vs Business
Portainer CE est gratuit et open-source — c'est ce que vous installez avec la commande ci-dessus. La version Business (payante) ajoute : RBAC granulaire, intégration LDAP/AD, audit logs, support pour les environnements Kubernetes avancés.
Pour un VPS perso ou une petite équipe, CE couvre largement tous les besoins.
Portainer ne remplace pas la connaissance de Docker — comprendre les volumes, les réseaux et les Dockerfiles reste indispensable. Mais pour la supervision quotidienne, le debugging de containers, et le déploiement de stacks, l'interface graphique fait gagner un temps réel.
Si vous débutez avec Docker, Docker : lancer votre premier conteneur couvre les concepts de base avant d'utiliser Portainer.
Pour automatiser les déploiements vers votre serveur Docker depuis GitHub, GitHub Actions : automatiser les tests et le déploiement montre comment builder et pousser des images depuis votre pipeline CI.