Running dmesg on Docker results in "dmesg: read kernel buffer failed: Permission denied"

In order to debug why this issue occurs the following command is run on a container:

docker run -it <dockerImageName> dmesg

results in:

dmesg: read kernel buffer failed: Permission denied

Attempts

  1. Running docker run -it <dockerImageName> sudo dmesg returns the same issue

Solution 1:

as Michael Hampton mentioned, containers are meant to run only single atomic service. As a matter of fact, one should understand that containers are not virtual machines but a single process by itself on your localhost.

Nevertheless, I got to know that, its a bit more harder to get SystemD working inside a container from here

I was able to get SystemD working inside an image built FROM centos:centos7 with:

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

For some undocumented reason the variable container=docker is apparently required. /sys/fs/cgroup is also required, as SystemD needs cgroups to work properly according to RedHat Bug 1033604.

After doing this, try to login to the container using docker exec -it <container> /bin/bash and then you could execute your systemctl commands.