Se il tuo uid
sull'host (id -u
) non è uguale a uid
dell'utente nel contenitore docker (spesso "docker") allora puoi avere questo problema. Puoi provare:
- Rendere gli UID uguali tra il tuo utente e l'utente nel contenitore docker.
- Impostazione delle autorizzazioni di gruppo sulla directory in modo che siano scrivibili per un gruppo a cui appartenete sia voi che docker.
- Potresti anche usare l'opzione nucleare:
chmod a+rwx -R project-dir/
L'opzione nucleare renderà il tuo git
spazio di lavoro sporco, che ti infastidirà molto, quindi non è la migliore soluzione a lungo termine. Ferma l'emorragia comunque.
Per comprendere meglio il problema, potrebbero esserti utili:
- https://github.com/docker/docker/issues/7906
- https://github.com/docker/docker/issues/7198
Nuova risposta:
Questa domanda sembra avere molto traffico e ora è disponibile una soluzione migliore:fixuid, come suggerisce il nome, è un eseguibile magico per modificare l'uid e il gid dell'utente del contenitore all'avvio del contenitore (usando -u qualcuno:qualcuno).
Per una spiegazione più approfondita vedi:https://boxboat.com/2017/07/25/fixuid-change-docker-container-uid-gid/
Vecchia risposta:
A partire dalla versione docker 1.7 hai la possibilità di montare una directory host con autorizzazioni su un contenitore utilizzando i flag :Z o :z in questo modo:
docker run -v ./api:/usr/src/app:Z
- :z - aggiungerà autorizzazioni a tutti i contenitori utilizzando l'etichetta 'svirt_sandbox_file_t'
- :Z - aggiungerà autorizzazioni solo all'etichetta del contenitore corrente
A partire da docker-compose v1.4.0, puoi usarlo in docker compose in questo modo:
volumes:
- ./api:/usr/src/app:Z
Anche se dovrei aggiungere, ho ancora alcuni problemi con questo (vedi Aggiunta di autorizzazioni alla directory host con docker-compose).
Riferimenti:
L'utilizzo di volumi con Docker può causare problemi con SELinux - http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/
Guida per l'utente di Docker -https://docs.docker.com/engine/userguide/dockervolumes/#volume-labels
Note sulla versione di Docker-compose per v1.4.0 - https://github.com/docker/compose/releases/tag/1.4.0