The*_*veO 4 docker linux-capabilities docker-compose
的搬运工撰写文件参考描述cap_add
和cap_drop
在一个相当简洁时尚元素:
添加或删除容器功能。有关完整列表,请参阅 man 7 功能。
这些元素是否有顺序,即先添加后删除?或者顺序是否重要(这在 YAML 中是否完全支持字典?)?
当其中之一cap_add
或cap_drop
包含时会发生什么ALL
?
我知道 Docker Linux 默认功能集,在https://github.com/moby/moby/blob/master/oci/caps/defaults.go#L4 中定义。
在浏览了 moby 源代码之后,我终于找到了TweakCapabilities():它需要两组功能来添加和删除,强制执行以下方案;因此适用于 docker-compose.yaml,其中 YAML 没有定义cap_add
和cap_drop
键的顺序。下面的第一个匹配项将终止列表。
privileged: true
:忽略cap_add
并cap_drop
完全返回所有可用的功能。cap_add
和cap_drop
是空的:返回默认泊坞窗的功能集。cap_add
contains ALL
:返回所有功能减去中列出的功能cap_drop
(ALL
在后者中忽略)。cap_drop
contains ALL
:cap_add
仅返回功能,忽略任何 Docker 默认功能。cap_drop
,然后在 中添加能力cap_add
,最后返回结果。如果我没记错的话,这也可以用更容易理解的方式表示如下......
privileged: true |
---|
所有能力:忽略cap_add 和cap_drop (老板模式) |
不 cap_add |
cap_add: ['CAP_A'] |
cap_add: ['ALL'] |
|
---|---|---|---|
不 cap_drop |
默认功能 | 默认 + CAP_A |
所有能力 |
cap_drop: ['CAP_Z'] |
默认 -CAP_Z |
默认 - CAP_Z +CAP_A |
全部 -CAP_Z |
cap_drop: ['ALL'] |
无能力 | CAP_A |
所有能力 |
最后,只有以下两个“确定性”组合始终包含cap_drop: ALL
并遵循最小特权行:
不 cap_add |
cap_add: ['CAP_A'] |
||
---|---|---|---|
cap_drop: ['ALL'] |
无能力 | CAP_A |
归档时间: |
|
查看次数: |
4532 次 |
最近记录: |