0 Votes

Modifications pour le document Containers et Portainer

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

Depuis 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
À la version 1.1
modifié par john
sur 2025/05/24 23:47
Commentaire de modification : Imported from XAR

Résumé

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è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
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
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-mariadb-tomcat
52 + 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: mariadb:11.4
64 + 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 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.
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]]