いきさつ
実はグッディーの環境ではいつからかDocker container内で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?
と言われるようになってました。かれこれ1年以上。
ただ、簡単には直せなかったので放置していたのですが、今回こちらの記事(Docker containerからHostのCamera画像を取得してHostのDisplayに出力する)のためにいろいろ試している中で無事解決したので報告させて頂きます。
助けられたのは
こちらのExited with code 1 and error message ‘sudo: effective uid is not 0 ….’ #388という記事。何気なく斜め読みしていると、
Solution: set option ‘suid’ in /etc/fstab for partition where docker stores it’s files.
という文字が。
あ、そういえば以前、docker imageがメインのSSDを圧迫するので、外部HDDに切り替えたっけ。えーとどうやったんだっけ ? ああこの記事だ : Dockerの/var/lib/dockerを移動する – Qiita
/etc/fstabをいじって、/var/lib/dockerを/mnt/hdd1/dockerに移動したんだよな。どれどれ… 見事にnosuidになってる !!!
(/etc/fdtab) LABEL=hdd1 /mnt/hdd1 auto nosuid,nodev,nofail,x-gvfs-show 0 0 /mnt/hdd1/docker /var/lib/docker none bind 0 0
これをsuidにして再起動、めでたくsudoがDocker container内で機能しましたとさ。しかし苦節長かった…