Comment installer et configurer portainer avec dockerfile facilement

Dans un environnement de gestion de conteneurs Docker, la multiplicité des conteneurs et stacks peut rapidement devenir un casse-tête, surtout lorsque les volumes se dispersent et que la configuration s’enchevêtre. Portainer s’impose alors comme une solution graphique incontournable pour simplifier cette administration. Il offre un contrôle visuel clair sur les conteneurs, les images, volumes et réseaux, rendant la gestion accessible même aux néophytes. De plus, pour ceux qui souhaitent intégrer des applications comme Plex, il est essentiel de bien comprendre le concept de docker plex. Cependant, pour exploiter pleinement ses capacités, l’installation et la configuration doivent être réalisées avec rigueur, en évitant les écueils courants qui mènent à la perte de données ou à des incompatibilités lors des mises à jour. Ce tutoriel offre un guide complet et pragmatique, mis à jour pour 2026, afin d’installer Portainer à partir d’un Dockerfile et Docker Compose, tout en assurant sécurité et automatisation.

Au fil de ce parcours technique, seront détaillées toutes les étapes essentielles, depuis la création du fichier docker-compose.yml, la gestion des volumes persistants, jusqu’à l’ajout d’une couche sécurisée avec des certificats TLS auto-signés. Ce guide s’adresse aussi bien aux administrateurs Linux chevronnés qu’aux utilisateurs passionnés de self-hosting souhaitant une maîtrise complète de leur infrastructure Docker. La simplicité d’utilisation de Portainer ne doit pas masquer la nécessité d’une configuration adaptée à l’échelle d’un environnement personnel ou professionnel. Grâce à une organisation rigoureuse des dossiers, une gestion de version maîtrisée et une vigilance sur la sécurité, la gestion des conteneurs Docker devient réellement facile et fiable.

Installation de Portainer avec Dockerfile et Docker Compose : étapes essentielles et bonnes pratiques

Avant toute tentative d’installation, il faut assurer la présence de Docker et Docker Compose sur la machine hôte. Ces outils sont fondamentaux pour lancer et orchestrer les conteneurs. La plupart des distributions Linux majeures, notamment Debian et ses dérivés, proposent des paquets récents ou les utilisateurs peuvent installer Docker via la procédure officielle qui garantit la dernière version stable.

Une fois les prérequis en place, l’approche recommandée consiste à créer un répertoire dédié, par exemple /opt/docker/portainer, qui servira à centraliser tous les fichiers liés à Portainer. Cette méthode évite le saupoudrage des fichiers de configuration et facilite la maintenance. Le fichier clé est docker-compose.yml, qui décrit l’ensemble des services nécessaires : portainer en lui-même et l’agent Portainer pour la gestion distante des hôtes Docker.

Un exemple de fichier docker-compose.yml bien configuré est le suivant :


version: "3.8"

services:
  portainer:
    image: portainer/portainer-ce:2.33.3
    container_name: portainer
    restart: unless-stopped
    ports:
      - "9000:9000"
      - "9443:9443"
      - "8000:8000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data

  agent:
    image: portainer/agent:2.33.3
    container_name: portainer_agent
    restart: unless-stopped
    environment:
      AGENT_CLUSTER_ADDR: tasks.agent
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes

La clé est ici d’exposer les ports nécessaires : 9000 pour l’interface web HTTP, 9443 pour HTTPS et 8000 pour l’agent Edge. Le montage du socket Docker /var/run/docker.sock permet à Portainer d’interagir directement avec l’API de Docker pour la gestion. Le volume local ./data assure la persistance des données de Portainer, évitant la perte de configuration en cas de redémarrage.

Pour lancer la stack :

docker compose up -d

Il convient ensuite de vérifier le bon démarrage avec :

docker ps

Le résultat doit montrer les conteneurs portainer et portainer_agent en état « Up ».

Cette méthode via Docker Compose est préférable au simple docker run, car elle permet une meilleure gestion des dépendances et facilite les mises à jour ultérieures. Elle s’intègre parfaitement aux pipelines d’automatisation et à une gestion de configuration robuste.

Interface Portainer Docker
Configuration Docker avec Portainer

Configurer Portainer avec Dockerfile : créer une image personnalisée pour une gestion fine

Par opposition à l’installation classique qui utilise des images existantes depuis Docker Hub, la création d’une image Docker personnalisée à partir d’un Dockerfile permet d’intégrer des configurations spécifiques, ajouter des scripts d’automatisation ou modifier les paramètres par défaut. Cela est particulièrement utile dans des environnements d’entreprise ou des scénarios d’orchestration avancés.

Voici un exemple minimaliste de Dockerfile pour Portainer CE :


FROM portainer/portainer-ce:2.33.3

# Copier un script personnalisé d'initialisation
COPY ./init.sh /usr/local/bin/init.sh
RUN chmod +x /usr/local/bin/init.sh

# Exécuter le script au démarrage
ENTRYPOINT ["/usr/local/bin/init.sh"]

Dans cet exemple, un script init.sh est ajouté pour automatiser certaines tâches comme la configuration des utilisateurs, la connexion à un endpoint distant ou la personnalisation des paramètres de l’interface via l’API REST de Portainer. Cette approche exige une bonne maîtrise des systèmes Linux, de Docker et des mécanismes des containers pour garantir que le conteneur reste léger et efficace.

Le Dockerfile s’intègre naturellement dans un pipeline CI/CD permettant de construire, tester puis déployer l’image personnalisée. Après construction :

docker build -t mon-portainer .

Le lancement s’effectue alors en remplaçant l’image officielle dans le docker-compose.yml :

image: mon-portainer

Cela ouvre la voie à des scénarios très spécifiques, par exemple la pré-configuration de projets, la gestion de secrets avec HashiCorp Vault ou l’intégration à des systèmes d’authentification avancés comme LDAP.

Cette personnalisation répond à un besoin réel d’automatisation et d’adaptation dans des contextes complexes, sous-tendant l’importance de comprendre le fonctionnement interne de Portainer et de Docker pour en tirer parti efficacement.

Installation facile de Portainer
Interface Portainer Docker

Sécuriser Portainer avec des certificats TLS auto-signés pour une gestion HTTPS fiable

La gestion sécurisée de Portainer est capitale. Par défaut, Portainer propose une interface web accessible en HTTP, éventuellement en HTTPS via un certificat auto-généré, ce qui déclenche souvent des avertissements dans les navigateurs. Pour un usage sérieux, notamment en production ou sur des environnements exposés, il est conseillé de mettre en place ses propres certificats TLS auto-signés.

L’opération démarre par la génération des certificats SSL. OpenSSL est l’outil de référence, disponible sur la plupart des distributions Linux :

openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out cert.csr
openssl x509 -req -days 365 -in cert.csr -signkey key.pem -out cert.pem

On obtient alors deux fichiers essentiels : key.pem (clé privée) et cert.pem (certificat). Ils doivent être placés sur le serveur, idéalement hors du répertoire accessible par Docker, dans un dossier protégé, par exemple /opt/docker/portainer/certs/.

Le fichier docker-compose.yml doit ensuite être modifié pour monter ces certificats dans le conteneur et activer leur utilisation :


services:
  portainer:
    image: portainer/portainer-ce:2.33.3
    container_name: portainer
    restart: unless-stopped
    ports:
      - "9000:9000"
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data
      - ./certs/cert.pem:/certs/portainer.crt
      - ./certs/key.pem:/certs/portainer.key
    environment:
      - SSL_CERTIFICATE=/certs/portainer.crt
      - SSL_CERTIFICATE_KEY=/certs/portainer.key

Après redémarrage du conteneur, l’interface Portainer est accessible en HTTPS via https://IP_DU_SERVEUR:9443. Le navigateur indiquera un avertissement lié au certificat auto-signé, mais la connexion sera cryptée et protégée contre l’interception.

Pour une sécurité accrue, le port HTTP 9000 peut être désactivé, forçant l’accès uniquement en HTTPS. Il est aussi possible d’intégrer Portainer derrière un reverse proxy comme Nginx ou Traefik pour gérer la terminaison TLS avec des certificats Let’s Encrypt ou d’autres autorités.

Au-delà de la sécurisation HTTPS, il est essentiel de configurer un mot de passe admin robuste au premier accès et de limiter les accès par des règles de pare-feu ou VPN. Cette approche assure que, même en cas d’exposition partielle, l’outil reste protégé.

Configuration Docker avec Portainer
Installation facile de Portainer

Meilleures pratiques pour gérer Portainer et Dockerfile : maintenance, mises à jour et erreurs courantes à éviter

Une installation réussie ne suffit pas si Portainer n’est pas maintenu proprement. La gestion des versions est cruciale. La tentation d’utiliser l’image Docker « latest » peut rapidement conduire à des ruptures dans la configuration ou la perte de données. Il est préférable de toujours figer une version stable dans le docker-compose.yml, par exemple portainer/portainer-ce:2.33.3, puis de planifier les mises à jour.

La mise à jour se fait classiquement en trois commandes :

  1. Modifier la version dans le docker-compose.yml
  2. Télécharger la nouvelle image docker compose pull
  3. Redémarrer proprement Portainer docker compose down && docker compose up -d

Cette procédure garantit que les volumes ./data conservent toutes les informations sans interruption durable de service.

La sauvegarde régulière du volume de données est également recommandée. Elle peut être automatisée via des scripts shell ou des jobs cron, exportant périodiquement les volumes critiques vers un stockage sûr. En cas de corruption ou de suppression accidentelle, ce type de sauvegarde se révèle vital.

Erreur courante Conséquence Solution recommandée
Ne pas monter le volume /data Perte de configuration et de données au redémarrage Configurer un volume Docker ou un montage local persistant
Utiliser l’image latest Risque d’incompatibilité et erreurs de mise à jour Figurer une version stable puis tester en environnement
Exposer Portainer sans authentification ou VPN Risque d’intrusion et compromission Installer un reverse proxy HTTPS ou VPN, mot de passe solide
Mélanger stacks Portainer et containers manuels Confusion dans la gestion des environnements Utiliser exclusivement Portainer pour les stacks ou documenter rigoureusement

Conserver une organisation stricte permettra d’éviter ces erreurs et garantira une expérience utilisateur optimale ainsi qu’une durée de vie prolongée du système d’orchestration Docker.

Interface Portainer Docker
Configuration Docker avec Portainer

Quiz : Installer et configurer Portainer avec Dockerfile


Installation facile de Portainer
Interface Portainer Docker

Accès sécurisé et bonnes pratiques en gestion avancée des conteneurs via Portainer

L’accès à l’interface Portainer doit impérativement être sécurisé, notamment lorsque le serveur est accessible depuis Internet. Le recours à un VPN ou à un reverse proxy est fortement recommandé. Par exemple, un reverse proxy Nginx configuré avec Let’s Encrypt permet une gestion fine des accès, un cryptage robuste et la possibilité de mettre en place des règles de restriction IP ou d’authentification complémentaire.

Un autre aspect avancé est la gestion des stacks Docker via Portainer lui-même. Il devient possible d’importer ou de créer directement des stacks Docker Compose depuis l’interface avec un historique des déploiements et la gestion des variables d’environnement automatisées. Cela réduit drastiquement le risque d’erreur humaine et facilite la réplication des environnements multi-conteneurs.

Par exemple, une stack typique pour une application Node-RED connectée à un broker MQTT peut être gérée par Portainer avec un fichier docker-compose.yml versionné dans un système Git. On peut ainsi automatiser la montée en charge, le redémarrage ciblé et les mises à jour sans coupure.

Enfin, il est important de surveiller régulièrement l’état des conteneurs, les logs et les ressources consommées via le tableau de bord. Portainer offre une visibilité en temps réel, fondamentale pour anticiper les besoins de scaling ou détecter des anomalies.

Configuration Docker avec Portainer

Quelles sont les étapes clés pour installer Portainer via Docker Compose ?

Installer Docker et Docker Compose, créer un répertoire dédié, rédiger un fichier docker-compose.yml avec les services Portainer et agent, puis lancer l’installation avec docker compose up -d.

Installation facile de Portainer

Pourquoi est-il important d’utiliser des volumes persistants pour Portainer ?

Les volumes persistants permettent de conserver la configuration et les données entre les redémarrages ou mises à jour, évitant ainsi les pertes de données importantes.

Interface Portainer Docker

Comment sécuriser l’accès à Portainer en production ?

Utiliser HTTPS via des certificats SSL/TLS, implémenter un reverse proxy avec authentification, limiter l’accès via VPN ou règles de pare-feu, et choisir un mot de passe admin fort.

Configuration Docker avec Portainer

Est-il recommandé d’utiliser l’image Docker ‘latest’ pour Portainer ?

Non, il est préférable de fixer une version spécifique dans le docker-compose.yml pour éviter les incompatibilités et problèmes lors des mises à jour.

Installation facile de Portainer

Peut-on personnaliser Portainer via un Dockerfile ?

Oui, créer une image Docker personnalisée permet d’intégrer des scripts d’automatisation et ajuster la configuration par défaut pour des besoins avancés.