私はdockerを使ってLinux chrootを解凍し、そこにあるコマンドを実行しますが、chrootの中からそれを得ます。
echo ciao > /dev/null
bash: /dev/null: Permission denied
nullデバイスが破損しているようだと思って別のことを試しました。
rm -f /dev/null ; mknod -m 0666 /dev/null c 1 3; echo ciao > /dev/null
bash: /dev/null: Permission denied
しかし、それも動作しませんでした。
stat
main ジョブ/dev/null
と chroot 内のジョブの間に違いはありません。
私はこの問題について書いた最初の人のようで、この文章を書くようになりました。
答え1
速度上の理由から、私のchrootはtmpfsから抽出され、--tmpfs /tmpfs:exec
dockerにマウントされます。
私のマウントは次のとおりです
tmpfs on /tmpfs type tmpfs (rw,nosuid,nodev,relatime)`
exec
dockerがtmpfsインストールに追加したデフォルト値をオーバーライドする方法と同様に、オーバーライドする必要があるパスがnoexec
ありました。nodev
したがって、パラメータは次のようになります。
--tmpfs /tmpfs:exec,dev
迷惑な部分は、mknod
失敗したりエラーを報告しないことです。デバイスファイルが作成されましたが実行できません。