Je travaille avec Docker et je veux monter un dossier dynamique qui change beaucoup (je n'ai donc pas à créer de dockers pour chaque exécution, ce qui serait trop coûteux), mais je veux que ce dossier soit en lecture seule. Changer les propriétaires de dossiers en quelqu'un d'autre fonctionne cependant chown
nécessite un accès root
que je ne préférerais pas exposer à une application.
Lorsque j'utilise l'indicateur -v
Pour monter, il donne quel que soit le nom d'utilisateur que je donne, j'ai créé un utilisateur non root dans l'image du menu fixe, mais tous les fichiers du volume avec le propriétaire en tant qu'utilisateur ayant exécuté le menu fixe changent. je donne à partir de la ligne de commande, je ne peux donc pas créer de fichiers ni de dossiers en lecture seule. Comment puis-je empêcher cela?
J'ai également ajouté mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
, afin de pouvoir changer d'utilisateur, via un terminal, mais les fichiers ont toujours des autorisations pour mon utilisateur.
Vous pouvez spécifier qu'un volume doit être en lecture seule en ajoutant :ro
au -v
interrupteur:
docker run -v volume-name:/path/in/container:ro my/image
Notez que le dossier est alors en lecture seule dans le conteneur et en lecture-écriture sur l'hôte.
Selon = Utiliser la documentation sur les volumes , il existe maintenant un autre moyen de monter des volumes en utilisant le --mount
_ commutateur. Voici comment utiliser cela en lecture seule:
$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image
Voici un exemple comment spécifier des conteneurs en lecture seule dans docker-compose
:
version: "3"
services:
redis:
image: redis:Alpine
read_only: true
Voici un moyen approprié de spécifier un volume en lecture seule dans docker-compose
:
version: "3"
services:
my_service:
image: my:image
volumes:
- type: volume
source: volume-name
target: /path/in/container
read_only: true
volumes:
volume-name: