Aller au contenu
Conteneurs & Orchestration medium

Portainer CE : gérer Docker et Podman visuellement

12 min de lecture

logo portainer

Portainer CE (Community Edition) centralise la gestion de vos conteneurs Docker, Podman et Kubernetes dans une interface web unique. Vous pouvez lancer des conteneurs, déployer des stacks Compose, gérer des volumes et des réseaux — sans taper de commandes.

  • Installer Portainer CE sur Docker ou Podman en un conteneur
  • Naviguer dans l'interface et comprendre les concepts (environnements, stacks, templates)
  • Déployer des conteneurs et des stacks Compose via l'éditeur web ou un dépôt Git
  • Gérer plusieurs environnements depuis un seul point avec les agents
  • Configurer les utilisateurs et leurs droits d'accès

Portainer intervient dès qu'une équipe a besoin d'un accès visuel et partagé à ses conteneurs, sans imposer la CLI à tout le monde :

  • Équipe mixte devs + ops : les développeurs consultent les logs et redémarrent leurs conteneurs sans connaître docker exec
  • Multi-serveurs : centraliser la vue de plusieurs hôtes Docker ou Podman dans un seul dashboard
  • Déploiement GitOps : synchroniser automatiquement des stacks Compose depuis un dépôt Git
  • Homelab : gérer une dizaine de services self-hosted sans jongler entre terminaux SSH
  • On-boarding : un nouvel arrivant déploie son premier conteneur en 2 clics, sans formation CLI
  • Audit visuel : vérifier en un coup d’œil quels conteneurs tournent, leur consommation et leur état

Docker et Podman s'utilisent en ligne de commande. Pour une gestion quotidienne ou une équipe mixte (devs + ops), une interface graphique accélère le travail :

TâcheCLIPortainer
Voir les conteneursdocker psListe avec états colorés
Lire les logsdocker logs -f appOnglet Logs, temps réel
Ouvrir un terminaldocker exec -it app shClic → Console
Déployer un Composedocker compose up -dColler le YAML, cliquer
Gérer plusieurs serveursSSH + commandesUn seul dashboard

Portainer ne remplace pas la CLI — il la complète pour les opérations courantes et la visualisation.

Portainer existe en deux versions :

FonctionnalitéCE (gratuit)Business Edition
Docker/Podman/K8s
Stacks Compose
GitOps (auto-update)
Multi-environnements
RBAC avancé
LDAP/AD/OAuth
Support prioritaire
Nombre de nœudsIllimitéSelon licence

Pour un usage personnel ou en équipe réduite, CE suffit amplement.

Portainer tourne lui-même dans un conteneur. Vous l'installez sur le serveur que vous voulez administrer.

  • Docker ≥ 20.10 ou Podman ≥ 4.0
  • Accès aux ports 9443 (HTTPS) et 8000 (Edge agents, optionnel)
  1. Créer un volume pour les données

    Fenêtre de terminal
    docker volume create portainer_data
  2. Lancer Portainer CE (version LTS)

    Fenêtre de terminal
    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:2.39.1
  3. Accéder à l'interface

    Ouvrez https://localhost:9443 (acceptez le certificat auto-signé).

Portainer supporte Podman depuis la version 2.16. Quelques différences :

  1. Créer un volume

    Fenêtre de terminal
    podman volume create portainer_data
  2. Activer le socket Podman (si ce n'est pas fait)

    Fenêtre de terminal
    systemctl --user enable --now podman.socket
  3. Lancer Portainer

    Fenêtre de terminal
    podman run -d \
    --name portainer \
    -p 9443:9443 \
    -v /run/user/$(id -u)/podman/podman.sock:/var/run/docker.sock:Z \
    -v portainer_data:/data \
    docker.io/portainer/portainer-ce:2.39.1
Fenêtre de terminal
# Docker
docker ps --filter name=portainer
# Podman
podman ps --filter name=portainer

Vous devez voir le conteneur en état Up avec le port 9443 mappé.

Au premier accès, Portainer demande de créer un compte administrateur :

  1. Définir le mot de passe admin

    Minimum 12 caractères. Ce compte aura tous les droits.

  2. Sélectionner l'environnement

    Choisissez "Get Started" pour configurer l'environnement local automatiquement (le Docker/Podman sur lequel Portainer tourne).

  3. Accéder au dashboard

    L'environnement "local" apparaît avec ses conteneurs, images et volumes.

L'interface Portainer s'organise autour de concepts clés :

Vue d'ensemble de l'environnement sélectionné :

  • Nombre de conteneurs (running/stopped)
  • Nombre de stacks, images, volumes, réseaux
  • Santé des services
SectionDescription
HomeListe des environnements connectés
ContainersTous les conteneurs (créer, démarrer, logs, console)
ImagesImages locales, pull depuis registres
VolumesVolumes persistants
NetworksRéseaux Docker/Podman
StacksDéploiements Compose (YAML)
App TemplatesCatalogue d'applications pré-configurées

Un environnement = un hôte Docker, Podman ou cluster Kubernetes. Portainer peut gérer plusieurs environnements depuis une seule instance.

Déployons un serveur nginx pour comprendre le workflow :

  1. Aller dans Containers → Add container

  2. Configurer

    • Name : nginx-demo
    • Image : nginx:alpine
    • Port mapping : Host 8180, Container 80
  3. Cliquer "Deploy the container"

  4. Vérifier

    Ouvrez http://localhost:8180 — vous voyez la page nginx.

Une fois le conteneur créé, cliquez dessus pour accéder à :

ActionDescription
LogsVoir les sorties stdout/stderr en temps réel
ConsoleOuvrir un terminal interactif (sh ou bash)
InspectVoir la configuration JSON complète
StatsCPU, mémoire, réseau en temps réel
Duplicate/EditRecréer avec des paramètres modifiés

Une stack dans Portainer = un fichier docker-compose.yml déployé et géré via l'interface.

  1. Aller dans Stacks → Add stack

  2. Choisir "Web editor"

  3. Nommer la stack (ex: wordpress-demo)

  4. Coller le Compose :

    services:
    wordpress:
    image: wordpress:6-apache
    ports:
    - "8280:80"
    environment:
    WORDPRESS_DB_HOST: db
    WORDPRESS_DB_USER: wp
    WORDPRESS_DB_PASSWORD: secret
    WORDPRESS_DB_NAME: wordpress
    depends_on:
    - db
    db:
    image: mariadb:11
    environment:
    MYSQL_DATABASE: wordpress
    MYSQL_USER: wp
    MYSQL_PASSWORD: secret
    MYSQL_ROOT_PASSWORD: rootsecret
    volumes:
    - db_data:/var/lib/mysql
    volumes:
    db_data:
  5. Cliquer "Deploy the stack"

WordPress est accessible sur http://localhost:8280.

Portainer peut synchroniser une stack avec un dépôt Git :

  1. Stacks → Add stack → Repository

  2. Configurer le dépôt

    • Repository URL : https://github.com/user/my-compose
    • Compose path : docker-compose.yml (chemin dans le repo)
    • Authentication : si dépôt privé
  3. Activer "Automatic updates" (optionnel)

    • Polling : Portainer vérifie périodiquement le repo
    • Webhook : déploiement déclenché par GitHub/GitLab
  4. Déployer

Les volumes persistent les données au-delà du cycle de vie des conteneurs.

Volumes → Add volume → nommer → créer.

Dans la liste des volumes, cliquez sur Browse. Portainer affiche l'arborescence et permet de :

  • Télécharger des fichiers
  • Uploader des fichiers
  • Supprimer

Portainer centralise plusieurs serveurs depuis une seule interface.

Deux méthodes :

MéthodeDéploiementUsage
Portainer AgentConteneur sur l'hôte distantRecommandé
Socket exposéAPI Docker sur TCPDéconseillé (sécurité)

Sur l'hôte distant :

Fenêtre de terminal
docker run -d \
--name portainer-agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-p 9001:9001 \
portainer/agent:2.39.1

Dans Portainer :

  1. Home → Add environment → Docker Standalone
  2. Agent → renseigner <ip-distante>:9001
  3. Nommer l'environnement
  4. Connect

Pour les environnements derrière un NAT ou firewall (pas d'accès entrant), Portainer propose les Edge Agents. L'agent établit une connexion sortante vers le serveur Portainer.

Portainer CE permet de créer des utilisateurs avec différents niveaux d'accès.

RôleDroits
AdministratorTous les droits sur Portainer et les environnements
Standard userAccès aux ressources autorisées uniquement

Users → Add user :

  • Nom d'utilisateur
  • Mot de passe (min 12 caractères)
  • Rôle (admin ou standard)

Regroupez les utilisateurs en équipes puis assignez des droits :

  1. Créer une équipe : Users → Teams → Add team
  2. Assigner des utilisateurs à l'équipe
  3. Configurer l'accès par environnement ou par stack

Portainer inclut des templates pour déployer rapidement des applications :

  • Bases de données (PostgreSQL, MySQL, Redis, MongoDB)
  • CMS (WordPress, Ghost)
  • Monitoring (Prometheus, Grafana)
  • Et plus...

App Templates → Sélectionner → Configurer → Deploy

Vous pouvez également créer vos propres templates ou utiliser des dépôts de templates communautaires.

Cause : Le socket Docker n'est pas monté ou n'est pas accessible.

Solution :

Fenêtre de terminal
# Vérifier le montage
docker inspect portainer | grep -A5 Mounts
# Le socket doit exister
ls -la /var/run/docker.sock

Cause : L'agent n'est pas joignable (firewall, port fermé).

Solution :

Fenêtre de terminal
# Tester la connectivité
nc -zv <ip-agent> 9001
# Vérifier que l'agent tourne
docker ps --filter name=portainer-agent

Cause : Le Compose a une erreur de syntaxe ou une image introuvable.

Solution :

  1. Cliquer sur la stack → voir les logs d'erreur
  2. Corriger le YAML
  3. Update the stack
ConceptDescription
Portainer CEInterface web pour Docker/Podman/K8s, gratuite
EnvironnementUn hôte Docker ou cluster géré par Portainer
StackDéploiement Compose géré via l'interface
AgentConteneur pour connecter un hôte distant
GitOpsSync automatique stack ↔ dépôt Git

En résumé : Portainer simplifie les opérations quotidiennes et centralise la gestion multi-serveurs. La CLI reste indispensable pour le scripting et l'automatisation avancée.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn