Для отладки, почему возникает эта проблема , в контейнере выполняется следующая команда:
docker run -it <dockerImageName> dmesg
results in:
dmesg: read kernel buffer failed: Permission denied
Попытки
docker run -it < dockerImageName> sudo dmesg
возвращает ту же проблему , как уже упоминалось Майкл Хэмптон , контейнеры предназначены для работы только одной атомной службы. На самом деле, надо понимать, что контейнеры - это не виртуальные машины, а один процесс на вашем локальном хосте.
Тем не менее, я узнал, что немного сложнее заставить SystemD работать внутри контейнера из здесь
я смог заставить SystemD работать внутри образа, построенного FROM centos:centos7 с:
docker run -privileged -ti -ti -e "контейнер=докер" -v /sys/fs/cgroup:/sys/fs/cgroup trinitronx/ansible-base:stable-centos7 /usr/sbin/init
По какой-то недокументированной причине переменная контейнер=докер, по-видимому, необходим. /sys/fs/cgroup также является требуется, так как SystemD нуждается в cgroups для правильной работы в соответствии с RedHat Bug 1033604.
После этого попробуйте войти в контейнер, используя docker exec -it <контейнер> /bin/bash
, а затем вы можете выполнить ваши systemctl
команды.