我正在尝试测试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 等以正确的方式解决它。