gpt4 book ai didi

docker - 特权Docker容器不能放弃功能吗?

转载 作者:行者123 更新时间:2023-12-02 19:09:50 29 4
gpt4 key购买 nike

我正在运行

docker run --rm --name mydocker --privileged \
-v /sys:/sys:ro \
-v /dev:/dev \
--stop-signal=SIGRTMIN+3 \
-p 8080:8080 \
-p 5005:5005 \
-p 8443:8443 \
--net=host \
--cap-drop=SYS_BOOT \
/usr/sbin/init

它应该以init身份运行systemd并从中删除SYS_BOOT功能。这是清洁关闭容器所必需的。当以上述方式运行时,它确实以pid 1的身份运行systemd init,但是该功能并未丢失:
[root@FK8CDFA9A82A9E7-A /]# cat /proc/1/status  | grep Cap  
CapInh: 0000003fffffffff
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000

删除SYS_BOOT功能时,它应如下所示:
CapInh: 0000003fffbfffff
CapPrm: 0000003fffbfffff
CapEff: 0000003fffbfffff
CapBnd: 0000003fffbfffff
CapAmb: 0000000000000000

任何想法为什么这不起作用? Docker版本:

客户:
版本:1.12.3
API版本:1.24
Go版本:go1.6.3
Git提交:34a2ead
内置:
操作系统/ Arch:linux / amd64

服务器:
版本:1.12.3
API版本:1.24
Go版本:go1.6.3
Git提交:34a2ead
内置:
操作系统/ Arch:linux / amd64

最佳答案

指定--privileged时,您不能删除功能。这似乎是一个弱点。以下是相关代码:Docker CE Linux OCI

if c.HostConfig.Privileged {
caplist = caps.GetAllCapabilities()
} else {
caplist, err = caps.TweakCapabilities(s.Process.Capabilities.Effective, c.HostConfig.CapAdd, c.HostConfig.CapDrop)
if err != nil {
return err
}
}

关于docker - 特权Docker容器不能放弃功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622243/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com