Jak*_*sic 12 permissions namespaces chrome docker
我在我的测试环境中在 Docker 中运行 chromedriver + chrome。
一切正常,直到最新的 CoreOS 升级。
这些是似乎有效的版本:
VERSION=1185.5.0
VERSION_ID=1185.5.0
BUILD_ID=2016-12-07-0937
Run Code Online (Sandbox Code Playgroud)
这是导致 chrome 进行核心转储的较新版本:
VERSION=1235.4.0
VERSION_ID=1235.4.0
BUILD_ID=2017-01-04-0450
Run Code Online (Sandbox Code Playgroud)
查看更改,似乎 docker 从 1.11.x 升级到 1.12.x,这中断了setns()
容器内的调用。setns()
Chrome 使用它来创建命名空间。
这是示例输出:
jsosic-coreos-test-20161207 ~ # docker --version
Docker version 1.11.2, build bac3bae
Run Code Online (Sandbox Code Playgroud)
从这个盒子上的一个容器里面:
[root@2939f21ecfaa /]# /opt/google/chrome/google-chrome
[57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display:
Run Code Online (Sandbox Code Playgroud)
这是新版本打破它的方式:
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)
Run Code Online (Sandbox Code Playgroud)
我发现,如果我使用--cap-add=SYS_ADMIN
或启动容器--privileged
- Chrome 会按预期工作。
这两个开关有什么区别?启用了哪些功能--privileged
?
而且,我可以setns()
在不影响安全性的情况下允许进入容器吗?
归档时间: |
|
查看次数: |
7140 次 |
最近记录: |