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,5 +3,3 @@ 1 -= Containers & Portainer = 2 - 3 3 {{toc/}} 4 4 5 5 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. ... ... @@ -6,22 +6,24 @@ 6 6 7 7 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. 8 8 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 + 9 9 == Déployer Portainer == 10 10 11 -Portainer permet d’administrer Docker (ou Docker Swarm)via une interface webintuitive.13 +Portainer permet d’administrer Docker via une interface web. 12 12 13 -=== Exemple de stack Portainer===15 +=== Exemple de stack === 14 14 15 15 {{code language="yaml"}} 16 -version: '3.8' 17 17 services: 18 18 portainer: 19 - image: portainer/portainer-ce:l atest20 + image: portainer/portainer-ce:lts 20 20 container_name: portainer 21 21 restart: always 22 22 ports: 23 23 - "9443:9443" 24 - - "8000:8000" 25 25 volumes: 26 26 - /var/run/docker.sock:/var/run/docker.sock 27 27 - portainer_data:/data ... ... @@ -30,43 +30,46 @@ 30 30 portainer_data: 31 31 {{/code}} 32 32 33 -Une fois démarré, l’interface est accessible sur : 34 -`https://192.168.1.25:9443` 33 +Interface accessible sur ##https:~/~/<IP_SERVEUR>:9443##. Le compte administrateur doit être créé dans les minutes qui suivent le premier démarrage. 35 35 35 +Le tag ##lts## est préférable à ##latest## : les versions de longue durée reçoivent les correctifs sans changement de comportement. 36 + 36 36 == Sécuriser l’accès à Portainer == 37 37 38 - Mêmeenréseaulocal,ilest recommandé :39 - -d’utiliserle port9443enHTTPS40 - -dedéfinir unmotdepassefort41 - -derestreindre l’accèsparpare-feu (`nftables`,`ufw`)auxseules adressesIPdeconfiance39 +* Accès en HTTPS (port 9443) uniquement 40 +* Mot de passe fort, et double authentification si possible 41 +* Restreindre l’accès par pare-feu (##nftables##, ##ufw##) aux adresses de confiance 42 +* Ne publier le port 8000 que si des agents Edge sont utilisés 42 42 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 + 43 43 == Déployer une application avec Docker Compose == 44 44 45 - Voici un exemplebasiquepourlancerXWikidans un stack:50 +Exemple pour XWiki : 46 46 47 47 {{code language="yaml"}} 48 -version: '3' 49 - 50 50 services: 51 51 xwiki: 52 - image: xwiki:lts-m ysql-tomcat55 + image: xwiki:lts-mariadb-tomcat 53 53 ports: 54 54 - "8080:8080" 55 55 environment: 56 - - DB_USER= xwiki57 - - DB_PASSWORD= xwiki58 - - DB_DATABASE= xwiki59 + - DB_USER=${DB_USER} 60 + - DB_PASSWORD=${DB_PASSWORD} 61 + - DB_DATABASE=${DB_DATABASE} 59 59 - DB_HOST=db 60 60 volumes: 61 61 - xwiki_data:/usr/local/xwiki 62 62 63 63 db: 64 - image: m ysql:5.767 + image: mariadb:11.4 65 65 environment: 66 - - MYSQL_ROOT_PASSWORD= root67 - - MYSQL_DATABASE= xwiki68 - - MYSQL_USER= xwiki69 - - MYSQL_PASSWORD= xwiki69 + - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} 70 + - MYSQL_DATABASE=${DB_DATABASE} 71 + - MYSQL_USER=${DB_USER} 72 + - MYSQL_PASSWORD=${DB_PASSWORD} 70 70 volumes: 71 71 - db_data:/var/lib/mysql 72 72 ... ... @@ -75,44 +75,53 @@ 75 75 db_data: 76 76 {{/code}} 77 77 78 - ==HTTPSsans domaine en local==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é. 79 79 80 - Pourgénérer uncertificat localsansnom dedomaine: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. 81 81 85 +== HTTPS sans domaine en local == 86 + 82 82 === Avec mkcert === 83 83 84 84 {{code language="bash"}} 85 -mkcert 192.168.1.25 90 +mkcert -install 91 +mkcert <IP_SERVEUR> <NOM_HOTE> 86 86 {{/code}} 87 87 88 - Celagénère uncertificat valide pour l’IP locale. Il peut ensuite être monté dans un servicenginxou traefik.94 +Le certificat est valide pour l'IP locale, à condition que l'autorité de mkcert soit installée sur les postes clients. Il peut ensuite être monté dans nginx, Traefik ou un service qui gère lui-même son TLS. 89 89 90 90 == Superviser ses conteneurs == 91 91 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.) 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 97 97 98 -== Astuce : voir les ports utilisés par les containers==103 +== Astuce : voir les ports utilisés == 99 99 100 100 {{code language="bash"}} 101 101 docker ps --format "table {{.Names}}\t{{.Ports}}" 102 102 {{/code}} 103 103 104 -== Astuce : nettoyer les containers/images inutilisés==109 +== Astuce : nettoyer == 105 105 106 106 {{code language="bash"}} 107 -docker system prune -a 112 +docker image prune # images intermédiaires sans nom 113 +docker system prune # conteneurs arrêtés, réseaux inutilisés, cache de build 108 108 {{/code}} 109 109 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 + 110 110 == Liens utiles == 111 111 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)122 +* [[Documentation Portainer>>https://docs.portainer.io/]] 123 +* [[Docker Cheat Sheet>>https://dockerlabs.collabnix.com/docker/cheatsheet/]] 124 +* [[mkcert>>https://github.com/FiloSottile/mkcert]] 115 115 116 116 == Liens internes == 117 117 118 118 * [[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]]