既定のグループではなくアクセス権を持つルートレス Docker で権限が拒否されました。

既定のグループではなくアクセス権を持つルートレス Docker で権限が拒否されました。

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をインストールします。

関連情報