Je travaille avec Docker et je souhaite monter un dossier dynamique qui change beaucoup (donc je n'aurais pas à créer une image Docker pour chaque exécution, ce qui serait trop coûteux), mais je veux que ce dossier soit en lecture seule . Changer le propriétaire du dossier pour quelqu'un d'autre fonctionne. Cependant, chown
nécessite un root
accès, que je préférerais ne pas exposer à une application.
Lorsque j'utilise -v
flag pour monter, cela donne quel que soit le nom d'utilisateur que je donne, j'ai créé un utilisateur non root à l'intérieur de l'image docker, cependant, tous les fichiers du volume avec le propriétaire en tant qu'utilisateur qui a exécuté docker, se transforment en l'utilisateur I donner à partir de la ligne de commande, donc je ne peux pas créer de fichiers et de dossiers en lecture seule. Comment éviter cela?
J'ai également ajouté mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
, afin que je puisse passer à un autre utilisateur via un terminal, mais les fichiers ont toujours des autorisations pour mon utilisateur.
Réponses:
Vous pouvez spécifier qu'un volume doit être en lecture seule en ajoutant
:ro
au-v
commutateur:Notez que le dossier est alors en lecture seule dans le conteneur et en lecture-écriture sur l'hôte.
2018 Modifier
Selon la documentation sur l' utilisation des volumes , il existe désormais un autre moyen de monter des volumes à l'aide du
--mount
commutateur. Voici comment l'utiliser en lecture seule:docker-composer
Voici un exemple de spécification de conteneurs en lecture seule dans
docker-compose
:la source
docker cp
commande séparée sur un conteneur d'arrêt.redis:alpine:ro
docker-composer
Voici une manière appropriée de spécifier un volume en lecture seule dans
docker-compose
:https://docs.docker.com/compose/compose-file/#long-syntax-3
la source
version: "3.2"
- Merci :)- './my-file.txt:/container-readonly-file.txt:ro'
sousvolumes
- noter le:ro
à la fin.