Si votre uid
sur l'hôte (id -u
) n'est pas le même que le uid
de l'utilisateur dans le conteneur docker (souvent "docker"), vous pouvez avoir ce problème. Vous pouvez essayer :
- Rendre les UID identiques entre votre utilisateur et l'utilisateur dans le conteneur docker.
- Définir les autorisations de groupe sur le répertoire pour qu'elles soient accessibles en écriture pour un groupe auquel vous et docker appartenez.
- Vous pouvez également utiliser l'option nucléaire :
chmod a+rwx -R project-dir/
L'option nucléaire rendra votre git
espace de travail sale, ce qui vous ennuiera beaucoup, ce n'est donc pas la meilleure solution à long terme. Ça arrête le saignement quand même.
Pour mieux comprendre le problème, vous pourriez trouver ces éléments utiles :
- https://github.com/docker/docker/issues/7906
- https://github.com/docker/docker/issues/7198
Nouvelle réponse :
Cette question semble avoir beaucoup de trafic et il existe maintenant une meilleure solution - fixuid, comme son nom l'indique, c'est un exécutable magique pour changer l'uid et le gid de l'utilisateur du conteneur au démarrage du conteneur (en utilisant -u quelqu'un:quelqu'un).
Pour une explication plus détaillée, voir :https://boxboat.com/2017/07/25/fixuid-change-docker-container-uid-gid/
Ancienne réponse :
À partir de la version 1.7 de Docker, vous avez la possibilité de monter un répertoire hôte avec des autorisations sur un conteneur à l'aide des drapeaux :Z ou :z comme suit :
docker run -v ./api:/usr/src/app:Z
- :z - ajoutera des autorisations à tous les conteneurs en utilisant l'étiquette 'svirt_sandbox_file_t'
- : Z - ajoutera des autorisations uniquement à l'étiquette de conteneur actuelle
Depuis docker-compose v1.4.0, vous pouvez l'utiliser dans docker compose comme ceci :
volumes:
- ./api:/usr/src/app:Z
Bien que je doive ajouter que j'ai encore quelques problèmes avec cela (voir Ajouter des autorisations au répertoire hôte avec docker-compose).
Références :
L'utilisation de volumes avec Docker peut causer des problèmes avec SELinux - http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/
Guide de l'utilisateur Docker -https://docs.docker.com/engine/userguide/dockervolumes/#volume-labels
Notes de version de Docker-compose pour la v1.4.0 - https://github.com/docker/compose/releases/tag/1.4.0