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をインストールしましたnosuid
。nosuid
ホストシステムでこのコマンドを無効にしました。
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"
。たとえば、インストールが表示され、インストールが表示された場合(またはインストールされていない)、インストールされます。df
Mounted on
docker-root
/home/docker/data
du
/home
/home/docker
/home/docker/data
/path/to/mountpoint
/home
(この回答を広げてフォローアップを手伝ってくれた@DonTintorettoに感謝します。)