A execução do dmesg no Docker resulta em "dmesg: read kernel buffer failed: Permission denied"

Para depurar por que problema ocorre o seguinte comando é executado em um contêiner:

docker run -it <dockerImageName> dmesg

resultado:

dmesg: read kernel buffer failed: Permission denied

Tentativa

  1. Execucao docker run -it <dockerImageName> sudo dmesg retorna o mesmo problema

como Michael Hampton mencionado, os contêineres devem executar apenas um único serviço atômico. Na verdade, deve-se entender que os contêineres não são máquinas virtuais, mas um único processo por si só em seu localhost.

No entanto, eu soube que, é um pouco mais difícil fazer o SystemD funcionar dentro de um contêiner de aqui

Consegui fazer o SystemD funcionar dentro de uma imagem construída a partir do centos: centos7 com:

docker run --privileged -ti -e "container=docker" -v /sys/fs/cgroup:/sys/fs/cgroup trinitronx/ansible-base:stable-centos7 /usr/sbin/init

Por algum motivo não documentado, a variável container=docker é aparentemente necessária. / sys / fs / cgroup também é necessário, pois SystemD precisa de cgroups para funcionar corretamente de acordo com RedHat Bug 1033604.

Depois de fazer isso, tente fazer login no contêiner usando docker exec -it <container> /bin/bash e então você poderia executar o seu systemctl comando.

Você não tem permissão para fazer isso em um contêiner. Qual é o propósito disso?