从 Docker 容器设置主机时间会导致权限错误,即使使用 CAP_SYS_TIME

从 Docker 容器设置主机时间会导致权限错误,即使使用 CAP_SYS_TIME

我正在尝试测试docker功能的使用情况。因此,为此,我尝试运行具有该--cap-add=SYS_TIME功能的容器,该容器应允许进程设置系统时间,但这是我收到的输出:

$ sudo docker run --cap-add=SYS_TIME --rm -it ubuntu bash
root@617c9eb44965:/# date -s '+2 小时'
日期:无法设置日期:操作不允许
2018 年 3 月 6 日星期二 10:17:46 UTC
root@617c9eb44965:/#

如果我--cap-add用以下方法替换输出,则--cap-drop输出没有任何变化:

$ sudo docker run --cap-drop=SYS_TIME --rm -it ubuntu bash
root@46dbb20ad793:/# date -s '+2 小时'
日期:无法设置日期:操作不允许
2018 年 3 月 6 日星期二 10:19:03 UTC

令我感到困惑的是,该date命令仍然输出增加了 2 小时的日期,而不是简单地因错误而终止(退出代码为1)。

我唯一能想到的是 seccomp/selinux 开始发挥作用,但我不知道如何检查这一点。

有人可以解释一下我如何确定是什么导致了操作不允许的错误,即使明确设置了功能,以及如何解决这个问题?

系统信息:

$ uname -a
Linux ws77 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:    16.04
Codename:   xenial
$ docker -v
Docker version 1.13.1, build 092cba3

请,别提了 --privileged它坏了,我想使用 capabilities/seccomp/selinux 等以正确的方式解决它。

相关内容