J'ai un conteneur Docker qui exécute une base de données MongoDB. Pour conserver les données de manière persistante, je monte un volume sur le conteneur qui est un volume AWS EBS formaté avec xfs (la recommandation MongoDB).
La commande de démarrage est la suivante :
$ docker run --name MongoDB -p 27017:27017 --volume /data/mongo/db:/data/db --volume /data/mongo/conf:/data/configdb mongo:3.4 --config /data/configdb/mongodb.conf
Mais je reçois toujours les erreurs suivantes :
chown: ne peut pas lire le répertoire '/data/configdb' : Permission refusée
chown: ne peut pas lire le répertoire '/data/db' : Permission refusée
J'ai essayé de nombreuses commandes chmod et chown sur tout le répertoire /data/mongo et ses sous-répertoires jusqu'à ce que j'en arrive à chmod -R 777 /data/mongo mais sans succès. Dans le fichier Dockerfile de mongo, je vois que l'entrypoint chown /data/db et /data/configdb : https://github.com/docker-library/mongo/blob/30d09dbd6343d3cbd1bbea2d6afde49f5d9a9295/3.4/docker-entrypoint.sh.
chown -R mongodb /data/configdb /data/db
Je suis donc bloqué avec ces droits d'accès aux répertoires.
Plus d'infos. Je suis sur AWS, ECS, Centos 7.
$ docker info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 3
Server Version: 1.12.5
Storage Driver: devicemapper
Nom du pool: docker-202:1-86279-pool
Taille du bloc de pool: 65,54 ko
Taille de l'appareil de base : 10,74 Go
Système de fichiers de base: xfs
Fichier de données : /dev/loop0
Fichier de métadonnées : /dev/loop1
Espace de données utilisé : 481,6 Mo
Espace de données total : 107,4 Go
Espace de données disponible : 6,486 Go
Espace de métadonnées utilisé : 1,167 Mo
Espace de métadonnées total : 2,147 Go
Espace de métadonnées disponible : 2,146 Go
Espace minimum libre de la piscine mince : 10,74 Go
Synchronisation Udev prise en charge : true
Suppression différée activée : false
Suppression différée de l'appareil activée : false
Nombre d'appareils supprimés différés: 0
Fichier de boucle de données : /var/lib/docker/devicemapper/devicemapper/data
AVERTISSEMENT : L'utilisation des périphériques en boucle est fortement déconseillée pour un usage en production. Utilisez `--storage-opt dm.thinpooldev` pour spécifier un périphérique de stockage de bloc personnalisé.
Fichier de boucle de métadonnées : /var/lib/docker/devicemapper/devicemapper/metadata
Version de la bibliothèque : 1,02,135-RHEL7 (2016-11-16)
Driver de journalisation : journald
Driver de cgroup : systemd
Plugins :
Volume: local
Réseau: pont hôte nul superposition
Swarm: inactif
Runtimes: runc docker-runc
Runtime par défaut: docker-runc
Options de sécurité: seccomp selinux
Version du noyau : 3.10.0-514.6.1.el7.x86_64
Système d'exploitation: CentOS Linux 7 (Core)
Type d'OS: linux
Architecture: x86_64
Nombre de crochets Docker : 2
CPUs: 2
Mémoire totale : 14,53 GiB
Nom : ip-172-31-25-123.eu-west-1.compute.internal
ID : 44WV:6KIZ:LHMK:5HDN:S3EC:YEQG:GFZZ:7TIV:6PCT:GPVF:E6IV:24Q5
Répertoire racine de Docker : /var/lib/docker
Mode de débogage (client) : false
Mode de débogage (serveur) : false
Registre: https://index.docker.io/v1/
Registres non sécurisés :
127.0.0.0/8
Registres : docker.io (sécurisé)