Vos astuces Docker et quelques questions

Bonjour à tous,

J’utilise docker pour plein de choses, mais il y a certaines choses qui m’agacent un peu et m’oblige à lancer des commandes supplémentaires et redondantes.

J’aimerais aujourd’hui trouver des solutions, mais aussi pour poser quelques questions quand a votre utilisation de docker.

1) Les droits des dossiers.

J’utilise un utilisateur autre que root pour gérer mon installation., il est ajouté au groupe docker et sudo (je sais qu’il y a mieux, mais je suis encore noobs)

Lorsque je crée un conteneur via portainer (et les stacks) il assigne les dossiers à root:root ce qui est assez pénible lors que je me connecte avec VSCode.

Comment faites-vous en sorte que les dossiers mappés appartiennent à votre user ?

  • Est-ce lié à l’user qui a créé portainer ? (je ne sais plus si le l’ai créé avec root ou mon user.
    Car à chaque fois, je suis obligé de lancer un chown

l’utilisation des variables d’environnement PUID et PGID n’y changent rien. (Surement logique car seulement dans le containeur ?)

2) L’utilisation des variables

Pour simplifier et gagner du temps, j’utilise les variables $MAVARIABLE ou ${MAVARIABLE} que j’injecte depuis un fichier .env

Il s’avère que ça ne marche pas tout le temps, (je m’en suis rendu compte avec les images LinuxServer.io au lancement dans les logs)

Comment faites-vous ? Quelle est la version minimum de compose pour les utiliser ? (version ‹ 3.8 › dans la stack)

3) Les bonnes pratiques réseaux.

Quand, on utilise les stack, il faut créer son réseau avant, sinon il met des erreurs. Est-ce qu’il y a un moyen de lui faire créer le réseau automatiquement en ayant la possibilité de le nommer nous même ?

Comment gérez-vous les réseaux avec votre reverse proxy ?

  • Un réseau pour tous les containers devant être accessible ?
  • Un réseau différent par container et ajout de tous les réseaux a votre reverse ?

4) Volumes ou Mappage ?

Tous est dans le titre, est-il préférable d’utiliser les volumes ou le mappage ?
Avantages et inconvénients de chacun ?

5) Sauvegarde

Lorsque l’on utilise que le mappage de dossier, faut-il sauvegarder aussi le dossier docker (celui des volumes, var lib docker etc) ou simplement ceux mapper et garder les composes quelque part ?

Merci d’avance pour vos reponses.

Salut,

Question de gôut mais bon portainer, c’est pas l’ideal. Un fichier docker-compose ça fait « pareil », la gestion des variables, la création des networks inclus. Et puis comme tu créera tes fichiers avec ton user dedié, pas de souci de droits.
Ensuite si tu veux regarder comment c’est lancé, monté avec portainer à la limite… Mais tout faire en portainer :face_vomiting:

Pour les réseaux justement la régle est la suivante : 1 réseau par docker-compose (ou stack), et seul les ports essentiels sont exposés (sur le host)

Pour les volumes, c’est facile aussi : tout dans les volumes (les données volatiles) et un montage pour les données importantes (config, db etc).

Et comme tu ranges tout (docker-compose, répertoires montés) dans un répertoire dédié, avec un backup de celui-ci, c’est tout bon

root@bdd:/applications/docker# tree .
.
├── tick
│   ├── config
│   │   ├── influxdb
│   │   │   └── influx-configs
│   │   └── telegraf
│   │       └── telegraf.conf
│   └── docker-compose.yaml
└── vaultwarden
    ├── data
    │   ├── attachments
    │   ├── db.sqlite3
    │   ├── db.sqlite3-shm
    │   ├── db.sqlite3-wal
    │   ├── icon_cache
    │   │   ├── 192.168.1.45.png.miss
    │   │   ├── 192.168.1.46.png.miss
    │   │   ├── auth.tuya.com.png
    │   │   ├── cfspart.impots.gouv.fr.png
    │   │   ├── forum.hacf.fr.png
    │   │   ├── grafana.xxxxxxxxxxx.fr.png.miss
    │   │   ├── influxdb.xxxxxxxxxxx.fr.png.miss
    │   │   ├── nuc.xxxxxxxxxxx.fr.png.miss
    │   │   ├── null.png.miss
    │   │   ├── portainer.xxxxxxxxxxx.fr.png.miss
    │   │   ├── robonect.xxxxxxxxxxx.fr.png.miss
    │   │   ├── semaphore.xxxxxxxxxxx.fr.png.miss
    │   │   ├── signup.live.com.png
    │   │   ├── sso.traefik.io.png.miss
    │   │   ├── www.cesu.urssaf.fr.png
    │   │   ├── www.france.tv.png
    │   │   ├── www.intermarche.com.png
    │   │   └── www.ovh.com.png
    │   ├── rsa_key.pem
    │   ├── rsa_key.pub.pem
    │   ├── sends
    │   └── tmp
    ├── env
    └── docker-compose.yaml
1 « J'aime »

Merci pour ta réponse.

Je vais regarder ca

Je trouve portainer sympa dans l’utilisation de tous les jours, c’est quand même plus visuel que la ligne de code.
et la gestion de plusieurs instances au meme endroit avec portainer agent

1 « J'aime »

Plus visuel certes, mais un docker-compose ça s’autosuffit et tu sais ce qu’il fait …

1 « J'aime »

Surtout qu’en plus maintenant la version enregistrée de portainer entreprise (comme particulier) permet beaucoup plus de choses, dont la vérification de l’existence de mise à jour des container (qui peut faire doublon avec watchtower suivant comment celui-ci a été paramétré).

1 « J'aime »

D’ailleurs ça aussi c’est un sujet.
Les containers en version latest, avec mise à jour automatique c’est le même genre d’effet que le clic à la seconde sur la mise à jour de HA… C’est joli, des fois ça n’a pas d’impact, mais parfois les changements dans l’image plantent tout…
Donc récupérer l’info de la nouvelle version : oui. Faire la mise à jour sans un humain qui vérifie : jamais

Oui les réglages par défaut de Watchower ne sont pas bon, voir aussi diun.

Salut,

J’ai peut-être mal compris le truc, mais avec Portainer, on configurer les stacks avec des fichier docker compose, et au final c’est auto suffisant aussi et tu gère tout de la même façon en format docker-compose.yaml, container, variable, réseaux, volumes…
En changeant le volume data de portainer y’a même moyen de l’avoir à la racine de ton répertoire regroupant tous les volumes persistants.

J’ai pas refais le test mais pour moi :

  • Tu peux importer des docker-compose dans portainer (et encore il y a 2 ans c’était pas possible)
  • Tu ne peux pas exporter une stack portainer en un fichier docker-compose

En soit docker compose et stack ça fait quasi le même truc. A quelques variantes prêts :

  • Docker-compose fait partie des outils d’une distrib (apt) alors que portainer c’est déjà un container, et une modification ne se reporte pas dans le docker-compose
    image

  • Tu ne peux pas créer un network dans une stack portainer (ça se gère à part), dans un docker-compose : oui

  • La variabilisation est possible en docker-compose, j’ai pas l’impression que ce soit le cas avec une stack portainer: EDIT cette partie là est seulement vraie en partie, ça marche avec un .env mais aussi avec un truc spécifique à portainer
    image

  • Accessoirement docker-composer, ça gére les histoires de droits du user de @McFly

J’ai un portainer sous la main, mais je ne l’utilise pas si souvent, ça évolue peut-être

C’est sûr que mélanger les container lancés à la main et ceux dans portainers c’est pas top.
Mais si tu fais tout avec portainer, tu as le fichier compose dispo et tu as accès à tout ce que tu peux avoir besoin.

simplement non lais ils sont dispo dans var lib docker etc

ca c’esg vraime’t un plus et l’histoire de creation de netwok aussi

J’ai pas vu comment c’est fichu mais s’il faut faire le tri à la main dans les volumes c’est pas viable

Il y a des trucs sympa aussi : les équivalents swarm par exemple donc c’est pas un outils mauvais en soit, juste que ça cache la technique et que c’est pas formateur.
Moi ça me fait penser à la différence entre HA docker et HA supervised

1 « J'aime »

Lo,

Effectivement je peste Watchower, plus aucun contrôle sur le container, le mise à jour est faire à heure précise,
Effectivement une version portainer ee avec un Diun en complément est tout juste parfait,

1 « J'aime »

Bonjour à tous,

Quelles sont les solutions que vous utilisez pour réaliser les backup de votre dossier « docker » (comprenant les dossiers montés et les docker-compose.yml) de manière automatique ? La solution gère t’elle bien le backup vers un site distant, le nettoyage des anciennes sauvegardes, l’exclusion de certains répertoires (Le dossier .esphome par exemple) ?

De mon côté, j’ai monté une image docker linux server duplicati, (avec une bonne configuration, on peut même faire en sorte que les chunks soit créés en ram avant l’upload sur S3, pour économiser le SSD de la machine), cela semble bien fonctionner.

Cependant, je trouve la solution assez lourde, le container utilise 300Mo de ram en base, même sans backup en cours… Et je me demande si y’a pas plus simple, toujours dans l’optique du « Keep it simple stupid ».

Merci de vos retours

Bonjour,
Sur un Synology j’utilise snapshot replication

Salut,
Moi pour le moment j’y suis allé old school avec RSync vers un disque de backup suivi d’un RClone vers le cloud.