2016-04-05 12 views
15

特権モードでコンテナを実行している場合は、すべてのカーネル機能を備えているのでしょうか、それとも別々に追加する必要がありますか? 「ルート」は、ホスト上のルートよりも少ない権限を持っているとして、ドッキングウィンドウコンテナが実行中from RedHat covering this特権付きコンテナと機能

をカバーする良い記事があり

答えて

14

特権モードで実行すると、実際にコンテナにすべての機能が提供されます。 は、しかし、常にあなたがドッカーのドキュメントを見れば、それは を必要とする最低限の要件は、彼らはまた、このフラグに(--privileged)

フルコンテナ機能

指すコンテナを与えることをお勧めです - 特権フラグはコンテナにすべての機能を提供し、デバイスcgroupコントローラによって強制されるすべての制限を解除します。言い換えれば、コンテナは、ホストができるすべてのことを行うことができます。このフラグはDocker内でDockerを実行するような特殊な使用を可能にするために存在します。

--cap-addフラグを使用して特定の機能を与えることができます。これらの機能の詳細については、man 7 capabilitiesを参照してください。リテラル名を使用することができます。 --cap-add CAP_FOWNER

+0

を使用して対に必要な機能を追加する側のエラーはどのような方法があります特定のアプリケーションに必要な機能を確認します。これはほとんどのアプリケーションでは文書化されていないようです。 – codefx

+0

@codefxここでの経験則はありません。アプリケーションや実行時に呼び出されるシステムコールによって異なります。ハブから既製のドッカー画像を使用している場合は、おそらくそこに記載されています。何かを自分で書くのなら、特別な機能が必要なカーネルAPIを知っているはずです – buddy123

2

、それはまだ共有生産対開発環境として使用して(ご使用のケースに応じて、硬化が必要な場合がありますクラスタ)

9

この記事は、私はあなたが私がのNVMeドライブを持っていますが、それはすべてのために動作します私のラップトップ上でこれをやっている--privileged

を使用してコンテナを実行したいことはありません理由についての情報を追加したいGoogle検索のランクに高いためホスト。

docker run --privileged -t -i --rm ubuntu:latest bash 

まずコンテナから/ procファイルシステム

をテストするために、マイナーな何かを行うことができます:

[email protected]:/# cat /proc/sys/vm/swappiness 
60 
[email protected]:/# echo "61" > /proc/sys/vm/swappiness  
[email protected]:/# cat /proc/sys/vm/swappiness 
60 

OKそれは、コンテナまたはホストのためにそれを変更しましたか?

$ cat /proc/sys/vm/swappiness 
61 

OOPS!、私たちは任意にホストのカーネルパラメータを変更することができます。しかし、これはちょうどDOSの状況で、親ホストから特権情報を収集できるかどうかを確認できます。

/sysツリーを歩き、ブートディスクのメジャーマイナー番号を見つけます。

注:私は2つのNVMeドライブとコンテナを持っているが、別のドライブ

[email protected]:/proc# cat /sys/block/nvme1n1/dev 
259:2 

OKでLVMの下で実行されていることは場所dbusのルールはありませんが自動スキャンでデバイスファイルを作成することができます。

[email protected]:/proc# mknod /devnvme1n1 b 259 2 
[email protected]:/proc# sfdisk -d /devnvme1n1 
label: gpt 
label-id: 1BE1DF1D-3523-4F22-B22A-29FEF19F019E 
device: /devnvme1n1 
unit: sectors 
first-lba: 34 
last-lba: 2000409230 
<SNIP> 

OK、私たちはブートディスクを読むことができます、パーティションのいずれかのデバイスファイルを作ることができます。開いているのでマウントすることはできませんが、コピーするにはまだddを使用できます。

[email protected]:/proc# mknod /devnvme1n1p1 b 259 3 
[email protected]:/# 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]をマウントして、私たちの努力がうまくいったかどうかを確認してください。

[email protected]:/# mount -o loop foo.img /foo 
[email protected]:/# ls foo 
EFI 
[email protected]:/# ls foo/EFI/ 
Boot Microsoft ubuntu 

だから基本的にあなたは、誰もが上--privilegedコンテナを起動できるようにする任意のコンテナのホストは、彼らにそのホスト上のすべてのコンテナへのrootアクセス権を与えることと同じです。

残念ながらドッキングウィンドウのプロジェクトは、信頼できるコンピューティング・モデル、および認証の外を選択したプラグインはこれを防御する方法はありませんので、必ず--privileged

関連する問題