我有一个应用程序,我希望有权启动短期任务并将这些任务安排为docker容器。我只是想通过docker run
来做这件事。
由于我想使攻击面尽可能小,我将应用程序视为不可信任。因此,它可以针对预定义的docker API端点运行任意docker run
命令(如果代码库包含bug或容器被泄露,输入在某处等地被不正确地转义)。
这就是为什么我想在某些方面限制该应用程序(实际上是一个调度程序):
--privileged
使用--read-only
旗帜我看了几个选项:
--selinux-enabled
级别的daemon
标记在容器内传播。但是,调度程序无论如何都可以通过run --privileged
重写此内容。docker run
)--privileged
--exec-opts
标志
native.cgroupdriver
)似乎Docker默认设计为信任容器调度程序。 有谁知道这是否是一个设计决定?
我错过了当前最新的Docker版本还有其他可能的解决方案吗?
我还看了Kubernetes及其Limit Ranges& Resource Quotas可以应用于K8S名称空间,看起来很有趣,假设有一种方法可以强制某些调度程序只使用某些名称空间。但是,这会增加运行K8S群集的问题范围。
答案 0 :(得分:1)
在unix平台上运行docker应与nice
兼容或者我认为首先要仔细看一下,看起来你需要一些像-cpuset-cpus="0,1"
从第二个链接,“--cpu-quota看起来类似于--cpuset-cpus ...为进程分配一个或几个核心,它只是时间管理而不是处理器编号管理。“强>