Estou tentando definir a hora do sistema dentro de um contêiner docker¹.
Eu pensei que para conseguir isso eu simplesmente teria que adicionar o recurso 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
Infelizmente, isso não funciona. Procurando por erros semelhantes Eu encontrei sugestões de que pode ser o AppArmor que está bloqueando a chamada do sistema, então eu tentei adicionar --security-opt apparmor:unconfined
, mas, infelizmente, sem sucesso:
$ 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
O que deve significar que o AppArmor não está em falta aqui.
Obviamente, executar o contêiner usando --privileged
works:
$ docker run --privileged -it ubuntu:16.04 /bin/bash
root@35ef33342149:/# date --set "+2 hours"
Thu Jan 1 2:00:00 UTC 1970
Mas o ponto principal do que estou tentando fazer é experimentar as opções e recursos de segurança do Docker. Estou faltando alguma coisa aqui? Você pode sugerir como depurar e corrigir esse problema?
¹ Sim. Eu sei que a hora do sistema não é um recurso com namespace.