La ejecución de dmesg en Docker da como resultado "dmesg: error en la lectura del búfer del kernel: Permiso denegado"

Para depurar por qué este problema ocurre el siguiente comando se ejecuta en un contenedor:

docker run -it <dockerImageName> dmesg

resultados en:

dmesg: read kernel buffer failed: Permission denied

Intento

  1. Ejecutar docker run -it <dockerImageName> sudo dmesg devuelve el mismo problema

como Michael Hampton como se mencionó, los contenedores están destinados a ejecutar un solo servicio atómico. De hecho, uno debe entender que los contenedores no son máquinas virtuales, sino un solo proceso por sí mismo en su host local.

Sin embargo, llegué a saber que es un poco más difícil hacer que SystemD funcione dentro de un contenedor desde aqui

Pude hacer que SystemD funcionara dentro de una imagen creada a partir DE centos:centos7 con:

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

Por alguna razón no documentada, aparentemente se requiere la variable container=docker. /sys / fs / cgroup también es necesario, ya que SystemD necesita cgroups para funcionar correctamente de acuerdo con el error 1033604 de RedHat.

Después de hacer esto, intente iniciar sesión en el contenedor usando docker exec -it <container> /bin/bash y entonces podrías ejecutar tu systemctl comando.

No se le permite hacer eso en un contenedor. ¿Cuál es el propósito de esto?