Dockerの下のChrome:CAP_SYS_ADMIN対特権?[閉まっている]


11

テスト環境のDocker内でchromedriver + chromeを実行しています。

最新のCoreOSアップグレードまで、すべてが正常に機能していました。

動作しているように見えるバージョンは次のとおりです。

VERSION=1185.5.0
VERSION_ID=1185.5.0
BUILD_ID=2016-12-07-0937

そして、これはchromeをコアダンプさせる新しいバージョンです:

VERSION=1235.4.0
VERSION_ID=1235.4.0
BUILD_ID=2017-01-04-0450

変更を見ると、dockerが1.11.xから1.12.xにアップグレードされたようで、これによりsetns()コンテナー内の呼び出しが中断されました。setns()Chromeは名前空間を作成するために使用されます。

これは出力例です:

jsosic-coreos-test-20161207 ~ # docker --version
Docker version 1.11.2, build bac3bae

このボックスの1つのコンテナ内から:

[root@2939f21ecfaa /]# /opt/google/chrome/google-chrome
[57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display:

これは新しいバージョンがそれを壊した方法です:

jsosic-coreos-test-2017-01-04 ~ # docker --version
Docker version 1.12.3, build 34a2ead

[root@13ab34c36c82 /]# /opt/google/chrome/chrome
Failed to move to new namespace: PID namespaces supported,
  Network namespace supported,
  but failed: errno = Operation not permitted
Aborted (core dumped)

私が見出したことは、私はどちらかとコンテナを起動した場合ということです--cap-add=SYS_ADMIN--privileged-予想通り、Chromeの動作します。

これら2つのスイッチの違いは何ですか?どの機能が有効になってい--privilegedますか?

また、setns()セキュリティを損なうことなく内部コンテナを許可できますか?


これをありがとう。github.com/docker/for-linux/issues/496多くのものを使用して問題を作成しました。修正する必要があると思います
Merc

私はもう2年近く遅れていますが、まだ興味がある場合は上記のチケットにはるかに優れた安全なソリューションがあります。
メルク

元のポスターが回答を更新しない場合(彼はSOでまったくアクティブに見えない)、別のポスターを受け入れることができるかどうかを教えてください。私はこれに何時間も費やしましたが、私たちが他の人々を救うのに何時間かかるか想像することができます。
メルク

回答:


7

AFAICS、ドキュメントで--privilegedスイッチを使用するのではなく、コンテナに必要な機能を許可することを提案しています。特権モードで実行すると、コンテナにすべての機能が付与されるようです (ドキュメントが最新であれば、最初のURLにリストされている機能そのものです)。

要するに、スイッチ--cap-add=SYS_ADMINと比較して、コンテナにより小さい機能のサブセットを付与するという--privilegedことです。イベントDockerドキュメントのサンプル(最初のURL)は、必要に応じて、SYS_ADMINまたはNET_ADMIN機能を追加することを好むようです。


おかげで、exec_linux.go助けた。私はそれを介してgrepするために
ドッカーレポを

Chromeを実行するだけでは、ここに記載されてはるかに優れたソリューションがあります:github.com/docker/for-linux/issues/496#issuecomment-441149510私は、人々は私が説明何ので、答えを更新するために非常に有益であろうと思いますその非常にコメント。同意するかどうか教えてください。
メルク

1

違いの1つは、-privilegedが/ devと/ sysをRWとしてマウントし、SYS_ADMINがROとしてマウントすることです。これは、特権コンテナがシステム上のデバイスにフルアクセスできることを意味します。SYS_ADMINはそれを提供しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.