Запуск dmesg в Docker приводит к сообщению «dmesg: ошибка чтения буфера ядра: отказано в разрешении»

Для отладки, почему возникает эта проблема , в контейнере выполняется следующая команда:

docker run -it <dockerImageName> dmesg

results in:

dmesg: read kernel buffer failed: Permission denied

Попытки

  1. Запуск docker run -it < dockerImageName> sudo dmesg возвращает ту же проблему
4
задан 13 April 2017 в 15:14
1 ответ

, как уже упоминалось Майкл Хэмптон , контейнеры предназначены для работы только одной атомной службы. На самом деле, надо понимать, что контейнеры - это не виртуальные машины, а один процесс на вашем локальном хосте.

Тем не менее, я узнал, что немного сложнее заставить 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 команды.

2
ответ дан 3 December 2019 в 03:56

Теги

Похожие вопросы