{{tag>sysadmin netadmin docker webui gui}}
====== Portainer ======
Portainer permet de gérer dans un environnement graphique web les conteneurs tout au long de leur cycle de vie.
Portainer comprend deux éléments:
* Le serveur Portainer: exécute l'interface de gestion WebUI, dialogue avec les agents.
* L'agent Portainer, s'installe sur les environnements docker distants à gérer.
Chaque élément s’exécute dans des conteneurs au sein d'un docker engine ou dans un cluster Swarm.
Par défaut l'interface de gestion (le serveur Portainer) est exposée sur le port 9000 du container.
===== Installation =====
Créer un volume:
docker volume create portainer_databank
Déployer Portainer sur le serveur docker local via l'image docker disponible sur le registry:
docker run -d -p 9000:9000 --name=portainer \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_databank:/data portainer/portainer-ce
Via le navigateur, on termine la configuration à l'URL http://localhost:9000:
* On définit un mot de passe pour admin
* On choisit de gérer l'environnement docker local
===== Portainer derrière un reverse proxy Traefik =====
Pour placer Portainer derrière le reverse proxy Traefik, on peut créer un service avec docker-compose.
Pour que Traefik puisse communiquer avec le service, le service doit être sur le même réseau que Traefik. Dans cet exemple le réseau de Traefik préexistant est nommé "http_loadbalancing_default"
version: "3.3"
services:
portainer:
image: "portainer/portainer-ce"
container_name: "portainer"
restart: always
networks:
- http_loadbalancing_default
volumes:
- type: volume
source: portainer_databank
target: /data
- type: bind
source: /var/run/docker.sock
target: /var/run/docker.sock
labels:
- "traefik.http.routers.portainer.rule=Host(`portainer.localhost`)"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
- "traefik.http.routers.portainer.entrypoints=http"
volumes:
portainer_databank:
networks:
http_loadbalancing_default:
external:
name: http_loadbalancing_default
===== Masquer des conteneurs =====
Lors de la création d'un conteur, un label peut être définit pour que le conteneur ne soit pas pris en compte par Portainer:
===== Références =====
* https://documentation.portainer.io/
* https://documentation.portainer.io/v2.0/deploy/linux/