0 Votes

Containers et Portainer

Modifié par john le 2025/05/25 11:16

Containers & Portainer

Cette section regroupe mes notes autour de l’utilisation de conteneurs Docker, la gestion via Portainer, le déploiement d’applications auto-hébergées, et la configuration d’un accès sécurisé même en local.

Docker est aujourd’hui un outil incontournable pour isoler, déployer et gérer des services légers. Combiné à Portainer, on dispose d’une interface web pour piloter facilement ses conteneurs.

Déployer Portainer

Portainer permet d’administrer Docker (ou Docker Swarm) via une interface web intuitive.

Exemple de stack Portainer

version: '3.8'
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:

Une fois démarré, l’interface est accessible sur :  
`https://192.168.1.25:9443`

Sécuriser l’accès à Portainer

Même en réseau local, il est recommandé :
- d’utiliser le port 9443 en HTTPS
- de définir un mot de passe fort
- de restreindre l’accès par pare-feu (`nftables`, `ufw`) aux seules adresses IP de confiance

Déployer une application avec Docker Compose

Voici un exemple basique pour lancer XWiki dans un stack :

version: '3'

services:
 xwiki:
   image: xwiki:lts-mysql-tomcat
   ports:
      - "8080:8080"
   environment:
      - DB_USER=xwiki
      - DB_PASSWORD=xwiki
      - DB_DATABASE=xwiki
      - DB_HOST=db
   volumes:
      - xwiki_data:/usr/local/xwiki

 db:
   image: mysql:5.7
   environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=xwiki
      - MYSQL_USER=xwiki
      - MYSQL_PASSWORD=xwiki
   volumes:
      - db_data:/var/lib/mysql

volumes:
 xwiki_data:
 db_data:

HTTPS sans domaine en local

Pour générer un certificat local sans nom de domaine :

Avec mkcert

mkcert 192.168.1.25

Cela génère un certificat valide pour l’IP locale. Il peut ensuite être monté dans un service nginx ou traefik.

Superviser ses conteneurs

Quelques bonnes pratiques :
- Mettre à jour régulièrement les images (`docker pull`)
- Utiliser des volumes nommés pour la persistance
- Activer des logs montés dans des fichiers ou avec journald
- Restreindre les droits (capabilities, réseau, etc.)

Astuce : voir les ports utilisés par les containers

docker ps --format "table {{.Names}}\t{{.Ports}}"

Astuce : nettoyer les containers/images inutilisés

docker system prune -a

Liens utiles

Liens internes