UI & Management

Portainer

Interface web Docker et Kubernetes self-hosted - gestion conteneurs, stacks Compose, images, volumes, RBAC. Community Edition zlib gratuite, Business payante.

Portainer est une interface web de gestion de conteneurs self-hosted, compatible Docker (Engine, Swarm), Docker Compose et Kubernetes. Elle couvre toutes les opérations courantes depuis un navigateur : déploiement de stacks Compose, gestion des conteneurs/images/volumes/réseaux, accès aux logs, exec dans les containers, et administration multi-environnements via un seul tableau de bord. C'est l'outil de référence pour les équipes qui veulent administrer Docker sans recourir exclusivement à la CLI.

Portainer existe en deux éditions : Community Edition (CE, licence zlib, gratuite) et Business Edition (BE, payante, avec RBAC avancé, intégration AD/LDAP, registre intégré, backups GitOps).


Informations essentielles

Origine : Portainer.io (Nouvelle-Zélande)  ·  Licence : zlib (CE) / Commerciale (BE)  ·  Architectures : x86_64, ARM64

Liens : Site officiel  ·  Documentation  ·  GitHub  ·  Releases

Support : CE maintenu activement. Support commercial disponible avec BE.

Stack par défaut

ComposantValeur
Environnements supportésDocker Engine, Docker Swarm, Kubernetes, Nomad
AgentPortainer Agent pour les environnements distants
Stockage configVolume Docker (portainer_data)
AuthLocal, LDAP, OAuth (BE)
Port9443 (HTTPS), 9000 (HTTP)

Prérequis

RessourceValeur
DockerEngine installé
Ports ouverts9443 (UI HTTPS), 8000 (agent edge tunnel)
RAM~200 Mo pour le container Portainer

Installation

Docker (mode standalone)

# Créer le volume de données
docker volume create portainer_data

# Démarrer Portainer CE
docker run -d \
  --name portainer \
  --restart always \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

# Accéder à l'UI
# https://localhost:9443
# Premier démarrage : créer le compte admin

Docker Compose

# docker-compose.yml
services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "9443:9443"
      - "8000:8000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

volumes:
  portainer_data:

Kubernetes (via Helm)

helm repo add portainer https://portainer.github.io/k8s/
helm repo update

helm install portainer portainer/portainer \
  --namespace portainer --create-namespace \
  --set service.type=LoadBalancer

kubectl get svc -n portainer
# Accéder via l'IP externe sur le port 9443

Vérification de l'installation

# Docker
docker ps | grep portainer
# portainer doit être Up

# Accéder à l'UI
curl -k https://localhost:9443/api/system/status
# {"Version": "2.x.x", ...}

# Premier démarrage : définir le mot de passe admin dans les 5 minutes
# (sinon Portainer se met en mode timeout sécurité)

Pièges courants

SymptômeCauseCorrection
"Timeout initializing admin"UI non ouverte dans les 5 min après démarrageRedémarrer le container Portainer
Pas de stacks visibleStacks créées hors Portainer (CLI)Portainer ne voit que ce qu'il a déployé ou adopté
Agent inaccessiblePort 9001 (agent) bloquéOuvrir le port 9001 entre Portainer et l'agent
Certificat auto-signéDéploiement sans certificat customImporter un certificat dans Settings ou accepter le self-signed

Utilisation

Déployer une stack Compose via l'UI

  1. StacksAdd stack
  2. Coller le contenu du docker-compose.yml ou pointer vers un repo Git
  3. Définir les variables d'environnement
  4. Deploy the stack

Gérer un environnement Docker distant (Agent)

Sur l'hôte 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:latest

Dans l'UI Portainer : EnvironmentsAdd environmentDocker Standalone → entrer l'IP:9001 de l'hôte distant.


Mise à jour

# Arrêter et supprimer le container (les données sont dans le volume)
docker stop portainer && docker rm portainer

# Repull et relancer
docker pull portainer/portainer-ce:latest
docker run -d \
  --name portainer \
  --restart always \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Troubleshooting

# Logs Portainer
docker logs portainer --tail 50

# Vérifier l'accès à Docker socket
docker exec portainer docker ps

# Réinitialiser le mot de passe admin (méthode officielle)
docker stop portainer
docker run --rm -v portainer_data:/data portainer/helper-reset-password --password "NouveauMotDePasse"
docker start portainer

Commandes utiles

# Voir l'état
docker ps | grep portainer

# Logs
docker logs portainer -f

# Arrêter
docker stop portainer

# Redémarrer
docker restart portainer

Ressources

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic