Wenn Ihr uid
auf dem Host (id -u
) ist nicht dasselbe wie uid
des Benutzers im Docker-Container (häufig "Docker"), dann kann dieses Problem auftreten. Sie können Folgendes versuchen:
- Identifizieren Sie die UIDs zwischen Ihrem Benutzer und dem Benutzer im Docker-Container.
- Setzen Sie die Gruppenberechtigungen für das Verzeichnis so, dass sie für eine Gruppe, der Sie und Docker angehören, beschreibbar sind.
- Sie können auch die nukleare Option verwenden:
chmod a+rwx -R project-dir/
Die nukleare Option macht Ihren git
Arbeitsplatz verschmutzt, was Sie sehr ärgern wird, ist also nicht die beste langfristige Lösung. Es stoppt die Blutung.
Zum besseren Verständnis des Problems finden Sie möglicherweise Folgendes hilfreich:
- https://github.com/docker/docker/issues/7906
- https://github.com/docker/docker/issues/7198
Neue Antwort:
Diese Frage scheint viel Verkehr zu haben und es gibt jetzt eine bessere Lösung - fixuid, wie der Name schon sagt, ist es eine magische ausführbare Datei, um die UID und GID des Containerbenutzers beim Containerstart zu ändern (mit -u jemand:jemand).
Eine ausführlichere Erklärung finden Sie unter:https://boxboat.com/2017/07/25/fixuid-change-docker-container-uid-gid/
Alte Antwort:
Ab der Docker-Version 1.7 haben Sie die Möglichkeit, ein Host-Verzeichnis mit Berechtigungen in einen Container einzuhängen, indem Sie die Flags :Z oder :z wie folgt verwenden:
docker run -v ./api:/usr/src/app:Z
- :z - fügt Berechtigungen zu allen Containern hinzu, die das Label 'svirt_sandbox_file_t' verwenden
- :Z - fügt Berechtigungen nur dem aktuellen Container-Label hinzu
Ab docker-compose v1.4.0 können Sie es wie folgt in docker-compose verwenden:
volumes:
- ./api:/usr/src/app:Z
Obwohl ich hinzufügen sollte, habe ich immer noch einige Probleme damit (siehe Hinzufügen von Berechtigungen zum Hostverzeichnis mit docker-compose).
Referenzen:
Die Verwendung von Volumes mit Docker kann Probleme mit SELinux verursachen – http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/
Docker-Benutzerhandbuch – https://docs.docker.com/engine/userguide/dockervolumes/#volume-labels
Docker-compose-Versionshinweise für v1.4.0 – https://github.com/docker/compose/releases/tag/1.4.0