2017-03-09 4 views
1

J'ai un NAS synology qui a le support de docker et qui voulait exécuter des conteneurs docker (je suis assez nouveau pour Docker). Par exemple pocketmine-pm (mais je crois que j'ai le problème d'écriture aussi avec d'autres conteneurs).Comment donner des permissions write/chmod au conteneur docker sur le volume mappé?

J'ai créé un volume sur l'hôte et mappé cela dans les paramètres du conteneur. (Et dans les paramètres docker synology pour le mappage de volume, je n'ai pas cliqué sur "lecture seule").

Selon le Dockerfile, un nouvel utilisateur 'pocketmine' est créé à l'intérieur du conteneur et cet utilisateur est utilisé pour démarrer le serveur. L'utilisateur semble avoir l'ID utilisateur 1000 (premier UID pour les nouveaux utilisateurs de Linux). Le conteneur utilise également un script Entrypoint.sh pour démarrer le serveur.

Initialement, le conteneur n'était pas capable d'écrire des fichiers dans le répertoire mappé. Je devais SSH dans l'hôte « chown » le répertoire pour l'UID 1000:

sudo chown 1000:1000 /volXy/docker/pocketminemp -R 

Après que l'archive peut être téléchargé et décompressé.

Malheureusement, je n'ai pas pu me connecter au serveur depuis mon appareil iOS. Le serveur est répertorié comme 'en ligne' mais la connexion échoue sans aucun message spécifique. J'ai vérifié ensuite les journaux du conteneur et vu les entrées suivantes (pas sûr si cela empêche vraiment la connexion, mais je vais essayer):

[*] Everything done! Run ./start.sh to start PocketMine-MP 
chown: changing ownership of '/pocketmine/entrypoint.sh': Operation not permitted 
chown: changing ownership of '/pocketmine/server.properties.original': Operation not permitted 
Loading pocketmine.yml... 

Apparemment, le conteneur ne peut pas chown un fichier, il était déjà en mesure de Télécharger.

Est-ce que quelqu'un sait ce qui peut être fait pour résoudre ce problème? Ai-je besoin de chmod le volume mappé et pourquoi ai-je besoin de chown le répertoire à UID 1000 (un utilisateur qui n'existe pas vraiment sur l'hôte) - n'y a-t-il pas une façon plus élégante de réparer les permissions?

Répondre

2

Lorsque vous exécutez le conteneur, vous devriez être en mesure d'utiliser l'indicateur --user="uid:gid" pour spécifier l'utilisateur que vous souhaitez exécuter le conteneur.

Source: https://docs.docker.com/engine/reference/run/#user

+1

OK, va vérifier cela, mais je crois que je l'ai lu quelque part que synology ne permet pas de passer le drapeau --user en tant que paramètre lorsque des conteneurs en cours d'exécution - mais il est plus un problème de synology que un problème de docker général. – Patric