Aller au contenu

[TUTO] Docker : Introduction


.Shad.

Messages recommandés

il y a 11 minutes, Lud a dit :

puis applique les droits associés au compte utilisateur spécifié dans l'application...

C'est exactement ce qu'il se passe pourtant. Avec le PUID et PGID on mappe un conteneur et un groupe de l'hôte vers le conteneur.

Il n'y a pas de question de mot de passe quand tu tentes d'accéder à un fichier sous Linux. Si tu essaies de parcourir avec un utilisateur lambda un dossier avec des permissions rwxrwx--- appartenant à root:root, tu auras un message de refus.

A aucun moment on te demande un mot de passe, sauf si tu invoques le mode super-utilisateur via "sudo". Mais c'est sudo qui amène une invitation de mot de passe, pas le fait de lire, écrire ou traverser/exécuter.

Je ne sais pas si ça répond à ta question, si pas une impression d'écran illustrant ton interrogation m'aiderait à mieux cerner ta demande.

Lien vers le commentaire
Partager sur d’autres sites

Un exemple :

Voici les droits de mon dossier partagé "music" : d---------+ root root music

Clairement, ce ne sont pas les permissions qui me laissent passer.

Pour les ACL : user:<nom_utilisateur>:allow:r-x---a-R-c--:fd--  (level:0)

Les ACL me laissent passer en lecture seule.

Je vois ce que tu veux dire, mais il y a quelque chose qui me chiffonne. C'est juste que je n'arrive pas à mettre précisément le doigt dessus. ^^

Du point de vue de la sécurité, je ne comprends pas comment on peut s'affranchir des restrictions d'accès uniquement en récupérant l'UID et le GID d'un utilisateur avec privilèges.

Si je mets les UID et GID de mon administrateur, ça veut dire que j'ai accès aux mêmes choses, mêmes droits de lecture/ écriture, sans avoir à préciser de mot de passe ?

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, Lud a dit :

Pour les ACL : user:<nom_utilisateur>:allow:r-x---a-R-c--:fd--  (level:0)

Les ACL me laissent passer en lecture seule.

Je veux bien que tu m'expliques comment voir et lire les ACL, j'ai jamais su avoir autre chose que le "+" en fin de permissions.

Il y a 1 heure, Lud a dit :

Du point de vue de la sécurité, je ne comprends pas comment on peut s'affranchir des restrictions d'accès uniquement en récupérant l'UID et le GID d'un utilisateur avec privilèges.

C'est bien la magie du truc, et c'est pour ça généralement qu'on n'utilise pas l'utilisateur admin pour exécuter un conteneur. Car il pourra faire ce qu'il veut sur les volumes de l'hôte montés dans le conteneur.

Utilisateur sans droit particulier ou utilisateur spécifique avec les droits minimum pour la bonne exécution du conteneur.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour,

 

Merci pour ce tuto. Il m'est d'une grande aide pour passer le pas et rentrer dans la logique Docker. J'ai d'ailleurs assez vite compris qu'il était préférable d'utiliser Docker-compose pour la gestion des conteneurs et le GUI DSM Docker pour la surveillance.

Je suis donc allé voir à droite à gauche les tutos sur la toile. Je suis également allé voir la doc officielle ici : https://docs.docker.com/compose/  et il y a un élément que je ne retrouve pas dans le tuto : qu'est-ce qu'un Dockerfile ?

Lien vers le commentaire
Partager sur d’autres sites

Je n'en parle pas car j'ai à peine joué avec et donc je pense que ce que tu trouveras ailleurs sera plus pertinent.
Mais c'est très simple, un Dockerfile va comprendre les étapes de construction de ton image, un exemple simple :

https://github.com/linuxserver/docker-deluge/blob/master/Dockerfile

A l'étape FROM on définit quel OS va être utilisé, on va souvent prendre quelque chose de léger comme une alpine.
LABEL permet d'ajouter des labels à l'image que tu vas créer. c'est entre autres un outil pour favoriser la communication entre conteneur (demander par exemple à un conteneur d'ajouter sur tous les autres conteneurs disposant de telle ou telle valeur de tag untel).

ENV définit des variables d'environnement, comme dans un script, docker-compose ou Docker via DSM.

RUN est le plus important car c'est la procédure de mise en place de tes applications. Ici ça se déchiffre assez bien :

- Mise à jour d'apt et ajout de nouveaux dépôts
- Installation de déluge et ses dépendances
- On supprime les fichiers temporaires inutiles pour réduire la taille de l'image

COPY permet à une personne qui build l'image d'ajouter des fichiers locaux dans l'image.

EXPOSE et VOLUME permettent d'exposer les ports et volumes dont l'utilisateur va pouvoir se servir.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

je commence à y voir plus clair. Je suis toujours dans l'étude de mon premier conteneur : linuxserver Sabnzbd (Github ici). En lisant l'aide sur Docker Compose je voyais que la première étape à son utilisation était la création d'un fichier Dockerfile. Or, cette partie est rarement abordée quel que soit le tuto trouvé. Par contre, en fouillant sur le Github de linuxserver/Sabnzbd on trouve ce fichier.

@.Shad. j'en conclus alors que ce fichier est généralement fourni par le développeur et est inclus dans l'image d'un conteneur Docker. Est-ce que j'ai raison ?

 

J'ai une autre question, mais concernant cette fois les fichiers docker-compose. La première ligne mentionne systématiquement la version. Exemple :

version: "3.9"

De quelle version s'agit-il ? J'ai mis à jour ma version de Docker-compose et je suis en 1.29.1

Lien vers le commentaire
Partager sur d’autres sites

Alors oui, c'est le maximum que prendra en compte docker en version pour tes fichiers compose.

Cela veut donc dire que tu est limité dans les options disponible. Tu trrouvera les différences ici par exemple : https://docs.docker.com/compose/compose-file/compose-versioning/#version-21

Aussi certains syntaxe peuveut changer entre version, et un compose ecrit en v2 , qu'on déclare en v3 peut ne pas etre interprété correctement ( meme si c'est asser rare car sur des options peu commune a nos utilisations )

Lien vers le commentaire
Partager sur d’autres sites

@Diplo95

Bonjour,

J'attire ton attention sur la valeur de cette version, pour certain conteneur "éxotiques" mettre une version trop récente peut poser problème car ces conteneurs peuvent utiliser encore des fonctionnalités qui sont dépréciées avec les nouvelles version de docker-compose. Dans ce cas, il vaut mieux je crois, laisser la version indiquée pour le conteneur.

@.Shad. et @EVOTk corrigez moi si je dis une c...ie ou si c'est mal exprimé.

PS : Arreeuuhh !!! grillé par @EVOTk 😜

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Pour résumer grossièrement, à partir des versions 3 c'est plus adapté pour Docker Swarm, qui gère l'aspect haute disponibilité et multi-hôtes.

Dans 95% des cas tu peux utiliser la version 2.1

Le Dockerfile c'est pour créer l'image toi-même, typiquement si c'est ton programme ou si tu veux apporter des modifications à la version disponible publiquement.

La plupart du temps tu n'en feras rien car l'image publique satisfera à ton besoin.

Lien vers le commentaire
Partager sur d’autres sites

Je galère un peu avec les volumes 😀

Voici mon problème : j'utilise sabnzbd pour télécharger des fichiers. Ils sont déposés dans

volume1/downloads

J'essaie maintenant de faire fonctionner Radarr avec l'image linuxserver/Radarr
J'ai donc créé un fichier docker-compose.yml tel que décrit dans le github :

---
version: "2.1"
services:
  radarr:
    image: ghcr.io/linuxserver/radarr
    container_name: radarr
    environment:
      - PUID=1030
      - PGID=100
      - TZ=Europe/Paris
      - UMASK_SET=022
    volumes:
      - /volume1/docker/radarr/config:/config
      - /volume1/video:/movies
      - /volume1/downloads:/downloads
    ports:
      - 7878:7878
    restart: unless-stopped

/volume1/video est ma médiathèque déjà constituée. Ainsi, j'espère que Radarr puisse venir y chercher des infos pour mettre à jour sa base de données. Mon but également est qu'il aille chercher les films téléchargés dans /volume1/downloads/ afin qu'il les déplace et les classe dans /volume1/video

Le conteneur se lance correctement et j'arrive à accéder à Radarr qui est donc fonctionnel. Cependant, lorsque je veux qu'il construise sa base de données, je n'ai pas accès à /volume1/video :

502687851_Capturedcran2021-05-02173831.thumb.jpg.ebe58ee8dea631cd2b564a585ec93b9e.jpg

J'ai pourtant changé les droits pour que le dossier video et downloads aient le même propriétaire :

1744976683_Capturedcran2021-05-02174121.jpg.123eabcd567032f1c66c624960b6bb0b.jpg

J'avoue que je patauge un peu, si qqn pouvait m'éclairer ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

Quand tu es sur Radarr,  c'est les dossier du conteneur que tu dois chercher et non ceux de l'hote (ici ton nas )

Donc dans radarr tu doit chercher /movies et non /volume1...

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, oracle7 a dit :

@Diplo95

Bonjour,

J'attire ton attention sur la valeur de cette version, pour certain conteneur "éxotiques" mettre une version trop récente peut poser problème car ces conteneurs peuvent utiliser encore des fonctionnalités qui sont dépréciées avec les nouvelles version de docker-compose. Dans ce cas, il vaut mieux je crois, laisser la version indiquée pour le conteneur.

@.Shad. et @EVOTk corrigez moi si je dis une c...ie ou si c'est mal exprimé.

PS : Arreeuuhh !!! grillé par @EVOTk 😜

Cordialement

oracle7😉

Non tu as bien expliqué ^^

Perso, je fais que du 2.4 comme version de docker-compose.
Si je trouve une source en 3.x, je réécrit en 2.4.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

Dans l'interface Docker je n'ai plus accès au registre, si je cherche une image j'ai la notification "Echec de l'interrogation du registre". J'ai tenté plusieurs choses sans succès (arrêt/redémarrage de docker, du nas, désactiver pihole). Je n'ose pas désinstaller et réinstaller Docker par crainte de devoir reconstruire tous mes containers.

Ah, un point important je suis sous DSM7 bêta.

Une idée ?

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, .Shad. a dit :

problème de résolution DNS

Bon j'ai désactivé mes zones DNS sur les deux serveurs et même déconnecté le DS212+. J'ai déconnecté le Raspberry avec Pihole, changé les DNS du routeur pour ceux de google (même pas peur), nettoyé les caches DNS et navigateur, changé de navigateur et toujours le même problème.

Si je mets l'adresse https://registry.hub.docker.com dans mon navigateur j'arrive bien à la page d'accueil du hub.

Il reste trois pistes (à mon avis):

1/ Problème DSM7 mais je pense qu'il aurait été signalé.

2/ Problème du hub docker idem le pb aurait été signalé

3/ Problème de mon appli docker.

Pour ce troisième point je peux tenter une désinstallation et une réinstallation mais j'ai peur de perdre mes containers.

Autre solution restaurer l'appli docker avec hyperbackup.

Qu'est ce que tu ferais ?

Lien vers le commentaire
Partager sur d’autres sites

Essaie de configurer manuellement les DNS du NAS dans Panneau de configuration -> Réseau, tu mets des DNS publiques et tu ré-essaies.

Pour Docker, si vraiment ça ne donne rien, tu peux d'abord désinstaller sans supprimer les fichiers de configuration.

Si toujours rien, oui tout sauvegarder (ou simplement déplacer de dossier partagé) et réinstaller. Vu que tu utilises Docker-compose, tout réinstaller ne devrait pas être trop long. 😉

Lien vers le commentaire
Partager sur d’autres sites

@.Shad. tu est vraiment trop fort !

Je viens de rentrer et m'apprêtais à mettre en oeuvre ton premier conseil et je viens de me rendre compte que le DNS du NAS qui a docker, était configuré sur manuel avec l'IP du second nas, alors que normalement il n'est jamais configuré en manuel. J'avais dû faire un essai, je ne sais plus pourquoi et j'ai oublié de décocher la case. 😳

Case décochée tout est rentré dans l'ordre. Merci de ton aide.👍

 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bonjour à tous

Je viens me greffer sur ce tuto Docker, car j'ai une petite question concernant les application qui tournent sous Docker : comment faut-il faire pour exécuter une commande via "docker exec" qui semble fait pour cela ?

Je m'explique : j'ai installé bitwarden, et je voudrais utiliser l'interface en ligne de commande (bw) pour faire des exports (voir https://bitwarden.com/help/article/cli/ )

Mais je ne sais pas comment m'y prendre. Si j'essaie de lancer la commande "bw" docker exec, je me fais jeter (test fait dans tous les containers bitwarden).

Citation

root@DS716:/volume1/docker/bitwarden# docker exec bitwarden-admin bw
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"bw\": executable file not found in $PATH": unknown

Il doit donc y avoir quelque chose qui m’échappe...

Lien vers le commentaire
Partager sur d’autres sites

Je pense que tu devrais t'inspirer de la commande que je t'ai filé dans mon tuto sur forum-nas.

docker exec -u XXXXXXX -i -w /UN_DOSSIER $(docker ps -qf "name=^YYYYYYYYY$") bash -c '/chemin_de_la_commande/bw arg_1 arg_2'

XXXXXXX = l'id de l'utilisateur qui a les droits sur le dossier qui suit le -w

YYYYYYYYY = le nom du conteneur, la commande $(docker ps -qf "name=^YYYYYYYYY$") ca récupérer l'ID du conteneur

Je pense que le UN_DOSSIER peut ne pas être mis, mais il s'agit d'un dossier à l'intérieur du conteneur, de préférence monté à la création pour récupérer ce qu'il contiendra.
 

Dans ta commande, je suppose que bitwarden-admin est l'utilisateur, et bw la commande à utiliser ?
À mon avis il manque des arguments pour la commande.

Et es-tu sûr que c'est bw l'exécutable pour Vaultwarden ?

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.