即使使用 --cap-add 或 --security-opt 运行 docker 容器也会出现权限错误

即使使用 --cap-add 或 --security-opt 运行 docker 容器也会出现权限错误

我正在尝试从 docker 容器中设置系统时间。

我认为为了实现这一点我只需添加以下功能SYS_TIME

$ docker run --cap-add SYS_TIME -it ubuntu:16.04 /bin/bash
root@50007999ec5e:/# date --set "+2 hours"
date: cannot set date: Operation not permitted
Thu Jan 1 2:00:00 UTC 1970

不幸的是,它不起作用。搜索类似错误时,我发现可能是 AppArmor 阻止了系统调用,所以我尝试添加--security-opt apparmor:unconfined,但遗憾的是,没有成功:

$ docker run --security-opt apparmor:unconfined --cap-add SYS_TIME -it ubuntu:16.04 /bin/bash
root@c4d923009bab:/# date --set "+2 hours"
date: cannot set date: Operation not permitted
Thu Jan 1 2:00:00 UTC 1970

这应该意味着 AppArmor 在这里没有错误。

显然使用以下命令运行容器--privileged

$ docker run --privileged -it ubuntu:16.04 /bin/bash
root@35ef33342149:/# date --set "+2 hours"
Thu Jan 1 2:00:00 UTC 1970

但我想做的重点是试验 docker 安全选项和功能。我是不是漏掉了什么?你能建议如何调试和修复这个问题吗?


¹ 是的。我确实知道系统时间不是命名空间资源。

相关内容