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
- 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.