Benutzerberechtigungen bei Docker unter Linux: Container als Host-User ausführen

Unter Ubuntu hatte ich regelmäßig Berechtigungsprobleme beim Nutzen eines Docker-Development-Setups, das am Mac oder unter Windows erstellt wurde: entweder hatte ich keine Berechtigung die im Container erstellten Dateien zu ändern oder der Container konnte nicht auf von mir im Host-System erstellte Dateien zugreifen.

Ein Problem ist, dass Docker in Ubuntu als Root-User installiert und ausgeführt wird und auch neue Container als Root-User erstellt werden:

docker run --rm \
    --volume ${PWD}:/app \
    composer /bin/bash \
    -c "composer init --require psr/container:^1 && composer install"

Hier habe ich das composer – image verwendet, ein kleines Paket als Abhängigkeit definiert und composer install aufgerufen. Dies führt dazu, dass die erzeugten Dateien und Verzeichnise root gehören und von meinem User nicht geändert werden können:

ls -la
total 20
drwxr-xr-x  3 johannes johannes 4096 Apr  4 19:38 .
drwxr-xr-x 11 johannes johannes 4096 Apr  1 18:59 ..
-rw-r--r--  1 root     root       57 Apr  4 19:37 composer.json
-rw-r--r--  1 root     root     2222 Apr  4 19:38 composer.lock
drwxr-xr-x  4 root     root     4096 Apr  4 19:38 vendor

Um vom Container erzeugte Dateien ändern zu können, reicht es, den Container unter der eigenen user id auszuführen:

docker run --rm \
    --volume ${PWD}:/app \
    --user $(id -u):$(id -g) \
    composer /bin/bash \
    -c "composer init --require psr/container:^1 && composer install"

Die erzeugten Dateien und Verzeichnisse gehören nun meinem User johannes, somit kann ich auf diese ohne Probleme zugreifen:

ls -la
total 20
drwxr-xr-x  3 johannes johannes 4096 Apr 13 11:32 ./
drwxr-xr-x 12 johannes johannes 4096 Apr 10 17:45 ../
-rw-r--r--  1 johannes johannes   57 Apr 13 11:32 composer.json
-rw-r--r--  1 johannes johannes 2222 Apr 13 11:32 composer.lock
drwxr-xr-x  4 johannes johannes 4096 Apr 13 11:32 vendor/

Weblinks

Schreibe einen Kommentar