Modifications pour le document Containers et Portainer
Modifié par john le 2026/09/20 20:10
Résumé
-
Propriétés de la Page (1 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Contenu
-
... ... @@ -1,3 +1,5 @@ 1 += Containers & Portainer = 2 + 1 1 {{toc/}} 2 2 3 3 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. ... ... @@ -4,24 +4,22 @@ 4 4 5 5 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. 6 6 7 -{{info}} 8 -Pour l'installation réellement en place sur mes deux machines, voir [[Portainer>>doc:Wiki Batcave John.Infrastructure.Portainer.WebHome]]. 9 -{{/info}} 10 - 11 11 == Déployer Portainer == 12 12 13 -Portainer permet d’administrer Docker via une interface web. 11 +Portainer permet d’administrer Docker (ou Docker Swarm) via une interface web intuitive. 14 14 15 -=== Exemple de stack === 13 +=== Exemple de stack Portainer === 16 16 17 17 {{code language="yaml"}} 16 +version: '3.8' 18 18 services: 19 19 portainer: 20 - image: portainer/portainer-ce:lts 19 + image: portainer/portainer-ce:latest 21 21 container_name: portainer 22 22 restart: always 23 23 ports: 24 24 - "9443:9443" 24 + - "8000:8000" 25 25 volumes: 26 26 - /var/run/docker.sock:/var/run/docker.sock 27 27 - portainer_data:/data ... ... @@ -30,46 +30,43 @@ 30 30 portainer_data: 31 31 {{/code}} 32 32 33 -Interface accessible sur ##https:~/~/<IP_SERVEUR>:9443##. Le compte administrateur doit être créé dans les minutes qui suivent le premier démarrage. 33 +Une fois démarré, l’interface est accessible sur : 34 +`https://192.168.1.25:9443` 34 34 35 -Le tag ##lts## est préférable à ##latest## : les versions de longue durée reçoivent les correctifs sans changement de comportement. 36 - 37 37 == Sécuriser l’accès à Portainer == 38 38 39 - *AccèsenHTTPS(port9443) uniquement40 - *Motdepassefort,etdoubleauthentificationsi possible41 - *Restreindrel’accès par pare-feu(##nftables##,##ufw##) aux adressesde confiance42 - *Nepublier leport8000quesi des agentsEdgesont utilisés38 +Même en réseau local, il est recommandé : 39 +- d’utiliser le port 9443 en HTTPS 40 +- de définir un mot de passe fort 41 +- de restreindre l’accès par pare-feu (`nftables`, `ufw`) aux seules adresses IP de confiance 43 43 44 -{{warning}} 45 -Monter ##/var/run/docker.sock## dans un conteneur revient à lui donner un accès root à l'hôte : quiconque atteint cette interface contrôle la machine. Pour un service qui n'a besoin que de lire l'état des conteneurs, utiliser un proxy filtrant plutôt que le socket directement. 46 -{{/warning}} 47 - 48 48 == Déployer une application avec Docker Compose == 49 49 50 - Exemple pour XWiki :45 +Voici un exemple basique pour lancer XWiki dans un stack : 51 51 52 52 {{code language="yaml"}} 48 +version: '3' 49 + 53 53 services: 54 54 xwiki: 55 - image: xwiki:lts-m ariadb-tomcat52 + image: xwiki:lts-mysql-tomcat 56 56 ports: 57 57 - "8080:8080" 58 58 environment: 59 - - DB_USER= ${DB_USER}60 - - DB_PASSWORD= ${DB_PASSWORD}61 - - DB_DATABASE= ${DB_DATABASE}56 + - DB_USER=xwiki 57 + - DB_PASSWORD=xwiki 58 + - DB_DATABASE=xwiki 62 62 - DB_HOST=db 63 63 volumes: 64 64 - xwiki_data:/usr/local/xwiki 65 65 66 66 db: 67 - image: m ariadb:11.464 + image: mysql:5.7 68 68 environment: 69 - - MYSQL_ROOT_PASSWORD= ${DB_ROOT_PASSWORD}70 - - MYSQL_DATABASE= ${DB_DATABASE}71 - - MYSQL_USER= ${DB_USER}72 - - MYSQL_PASSWORD= ${DB_PASSWORD}66 + - MYSQL_ROOT_PASSWORD=root 67 + - MYSQL_DATABASE=xwiki 68 + - MYSQL_USER=xwiki 69 + - MYSQL_PASSWORD=xwiki 73 73 volumes: 74 74 - db_data:/var/lib/mysql 75 75 ... ... @@ -78,53 +78,44 @@ 78 78 db_data: 79 79 {{/code}} 80 80 81 -Les mots de passe ne sont jamais écrits dans le compose : ils viennent des variables d'environnement de la stack, ou d'un fichier ##.env## non versionné. 82 - 83 -Choisir une version de base de données encore supportée par son éditeur, et l'épingler sur une version majeure plutôt que ##latest##, pour éviter une montée de version majeure automatique. 84 - 85 85 == HTTPS sans domaine en local == 86 86 80 +Pour générer un certificat local sans nom de domaine : 81 + 87 87 === Avec mkcert === 88 88 89 89 {{code language="bash"}} 90 -mkcert -install 91 -mkcert <IP_SERVEUR> <NOM_HOTE> 85 +mkcert 192.168.1.25 92 92 {{/code}} 93 93 94 - Le certificatestvalide pour l'IP locale, à condition que l'autorité de mkcert soit installée sur les postes clients. Il peut ensuite être monté dansnginx, Traefik ouun servicequigère lui-mêmesonTLS.88 +Cela génère un certificat valide pour l’IP locale. Il peut ensuite être monté dans un service nginx ou traefik. 95 95 96 96 == Superviser ses conteneurs == 97 97 98 -* Utiliser des volumes nommés ou des dossiers montés pour la persistance 99 -* Épingler les images des bases de données, laisser ##latest## aux applications 100 -* Limiter les droits : ##no-new-privileges##, réseaux séparés, ports non publiés quand c'est possible 101 -* Sauvegarder les bases par un export SQL, jamais en copiant leurs fichiers pendant qu'elles tournent 92 +Quelques bonnes pratiques : 93 +- Mettre à jour régulièrement les images (`docker pull`) 94 +- Utiliser des volumes nommés pour la persistance 95 +- Activer des logs montés dans des fichiers ou avec journald 96 +- Restreindre les droits (capabilities, réseau, etc.) 102 102 103 -== Astuce : voir les ports utilisés == 98 +== Astuce : voir les ports utilisés par les containers == 104 104 105 105 {{code language="bash"}} 106 106 docker ps --format "table {{.Names}}\t{{.Ports}}" 107 107 {{/code}} 108 108 109 -== Astuce : nettoyer == 104 +== Astuce : nettoyer les containers/images inutilisés == 110 110 111 111 {{code language="bash"}} 112 -docker image prune # images intermédiaires sans nom 113 -docker system prune # conteneurs arrêtés, réseaux inutilisés, cache de build 107 +docker system prune -a 114 114 {{/code}} 115 115 116 -{{warning}} 117 -##docker system prune -a## supprime toutes les images qu'aucun conteneur en cours n'utilise, y compris les images construites localement, qui devront être reconstruites. Vérifier d'abord ce qui serait supprimé avec ##docker image ls##. 118 -{{/warning}} 119 - 120 120 == Liens utiles == 121 121 122 -* [ [Documentation Portainer>>https://docs.portainer.io/]]123 -* [ [Docker Cheat Sheet>>https://dockerlabs.collabnix.com/docker/cheatsheet/]]124 -* [ [mkcert>>https://github.com/FiloSottile/mkcert]]112 +* [Documentation Portainer](https://docs.portainer.io/) 113 +* [Docker Cheat Sheet](https://dockerlabs.collabnix.com/docker/cheatsheet/) 114 +* [mkcert – création de certificats locaux](https://github.com/FiloSottile/mkcert) 125 125 126 126 == Liens internes == 127 127 128 128 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]] 129 -* [[Retour à Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]] 130 -* [[Portainer (installation en place)>>doc:Wiki Batcave John.Infrastructure.Portainer.WebHome]]