770権限を持つルートが所有するディレクトリをバインドマウントしようとしています。私のユーザーはホストからアクセス(読み取り、書き込み、実行)する権限を持つグループに属していますが、所有権グループは私のユーザーのデフォルトグループではありません。ただし、ルートレスDockerで実行されているコンテナにディレクトリをバインドマウントしようとすると、そのディレクトリにアクセスできなくなります。
ディレクトリのグループ所有権をユーザーのデフォルトグループに設定すると、ルートレスDockerからアクセスできます。
デフォルト以外のグループからこれらのディレクトリにアクセスする方法はありますか?
たとえば、ホスト上の次のディレクトリの場合:
drwxrwx--- 2 root non-primary-group test-directory
$ id
uid=101(example-user) gid=101(primary-group) groups=101(primary-group),102(non-primary-group)
実行すると拒否されます。
$ docker run --rm -it -v ./test-directory:/test-directory ubuntu
root@1d84f2dsgdsf: # cd /test-directory
bash: cd: test-directory/: Permission denied
ただし、ディレクトリの所有権が次の場合:
drwxrwx--- 2 root primary-group test-directory
その後、すべてがうまく動作します。
答え1
他の経験によると、これは「ルートレス」Dockerバージョンで予想される状況のようです。
コンテナの外側にあるものがあっても、ルートのないDockerは常にコンテナ内でバインドマウントを使用しているuser:user
ようです。root:root
源泉:
https://forums.docker.com/t/bind-mounting-permissions-with-user-broken-using-rootless-docker/88257
https://forums.docker.com/t/bind-mount-permissions-unexpected-mounting-as-root-root/129328/6
https://docs.docker.com/engine/security/userns-remap/
これらの追加の複雑さがもはやワークフローと互換性がなくなった場合は、最終的に「レガシー」Dockerにロールバックすることも検討できます。たとえば、「ルートレス」Dockerをアンインストールしてから、既存のDockerをインストールします。