Я пытаюсь проверить использование возможностей docker. Поэтому для этого я пытаюсь запустить контейнер с возможностью --cap-add=SYS_TIME, что должно позволить процессу устанавливать системное время, однако это результат, который я получаю:
$ sudo docker run --cap-add=SYS_TIME --rm -it ubuntu bash root@617c9eb44965:/# date -s '+2 hours' date: cannot set date: Operation not permitted Tue Mar 6 10:17:46 UTC 2018 root@617c9eb44965:/#Если я замените --cap-add на --cap-drop, ничего не изменяется в выходе:
$ sudo docker run --cap-drop=SYS_TIME --rm -it ubuntu bash root@46dbb20ad793:/# date -s '+2 hours' date: cannot set date: Operation not permitted Tue Mar 6 10:19:03 UTC 2018Меня озадачивает, что команда 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. Он сломан, и я хочу сделать это правильно, используя возможности / seccomp / selinux и т. Д.