nosuidについて文句を言いながらdocker内でsudoが失敗するのはなぜですか?

nosuidについて文句を言いながらdocker内でsudoが失敗するのはなぜですか?

Dockerコンテナ内で実行するとsudoエラーが発生します。

sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?

権限がsudo正しく設定されました。

-rwsr-xr-x 1 root root 149080 gen 18  2018 /usr/bin/sudo

また、ルートファイルシステムはnosuid.(マウントポイントにはmount | grep nosuid含まれていません)としてマウントされません。/

何が間違っている可能性がありますか?

答え1

これによるとasbeのGitHub投稿

1 つのホストのコンテナは sudo で正常に動作しますが、ほぼ同じホストでエラーが発生します。最後に、問題のホストがストレージドライバとして「オーバーレイ」と他の「aufs」を使用していたので、その理由を見つけました。両方のdockerのインストールは、/var/lib/dockerを"nosuid"がインストールされているドライブに移動しました。 「override」は「nosuid」を尊重することがわかりました。「nosuid」が削除されたディスクに/var/lib/dockerがインストールされていることを確認するだけで、すべての問題が解決されます。(奇妙なこと - 「aufs」を使った設定ではこれは起こりません)

(強調は私が追加しました。)

実際、そのオプションが有効になっているdata-root(デフォルトでは/var/lib/docker)別のドライブにDockerをインストールしましたnosuidnosuidホストシステムでこのコマンドを無効にしました。

sudo mount -n -o remount,suid /path/to/mountpoint

その後、sudoコンテナを再起動します。

決める/path/to/mountpoint:パスは/path/to/mountpointを含むパスです。data-rootまず、data-rootディレクトリを確認するにはを実行しますdocker info | grep "Docker Root"。たとえば、インストールが表示され、インストールが表示された場合(またはインストールされていない)、インストールされます。dfMounted ondocker-root/home/docker/datadu/home/home/docker/home/docker/data/path/to/mountpoint/home

(この回答を広げてフォローアップを手伝ってくれた@DonTintorettoに感謝します。)

関連情報