0 Votes

Modifications pour le document Containers et Portainer

Modifié par john le 2026/09/20 20:10

Depuis la version 1.1
modifié par john
sur 2025/05/24 23:47
Commentaire de modification : Imported from XAR
À la version 2.1
modifié par john
sur 2026/09/20 20:10
Commentaire de modification : Il n'y a aucun commentaire pour cette version

Résumé

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 web intuitive.
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:latest
20 + 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ê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
39 +* 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 exemple basique pour lancer XWiki dans 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-mysql-tomcat
55 + image: xwiki:lts-mariadb-tomcat
53 53   ports:
54 54   - "8080:8080"
55 55   environment:
56 - - DB_USER=xwiki
57 - - DB_PASSWORD=xwiki
58 - - DB_DATABASE=xwiki
59 + - 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: mysql:5.7
67 + image: mariadb:11.4
65 65   environment:
66 - - MYSQL_ROOT_PASSWORD=root
67 - - MYSQL_DATABASE=xwiki
68 - - MYSQL_USER=xwiki
69 - - MYSQL_PASSWORD=xwiki
69 + - 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 -== HTTPS sans 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 -Pour générer un certificat local sans nom de domaine :
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 -Cela génère un certificat valide pour l’IP locale. Il peut ensuite être monté dans un service nginx ou 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]]