我需要在 Docker 容器内创建命名空间。作为其中的一部分,我需要将/proc
私有挂载到内部命名空间。我意识到我必须以特定权限运行容器才能实现这一点,但我更愿意启用最小集。
这有效:
$ sudo docker run --privileged --security-opt=seccomp=unconfined \
-it fedora:rawhide /usr/bin/unshare -Ufmp -r \
/bin/sh -c 'mount -t proc proc /proc'
Run Code Online (Sandbox Code Playgroud)
这不会:
$ sudo docker run --cap-add=sys_admin --security-opt=seccomp=unconfined \
-it fedora:rawhide /usr/bin/unshare -Ufmp -r \
/bin/sh -c 'mount -t proc proc /proc'
mount: /proc: cannot mount proc read-only.
Run Code Online (Sandbox Code Playgroud)
因此,仅关闭 seccomp 过滤器并添加CAP_SYS_ADMIN
是不够的。什么是足够了吗?
更新: Selinux 是问题的一部分。如果您全局关闭 selinux 强制,它会起作用。但是,您也可以使用 关闭对特定容器的强制执行--security-opt label:disable
,这在在线 Docker 手册的安全配置部分有记录:
sudo docker run --cap-add=sys_admin --security-opt …
Run Code Online (Sandbox Code Playgroud) 在此页面上:http : //tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html描述了如何为 DataSource 资源设置 JNDI 名称。它告诉您 Tomcat 的标准数据源工厂是 org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory,但是在 Fedora 17 上安装 Tomcat 后,我搜索了系统上的每个 jar 文件,但找不到包含此类的文件。
它在哪里?