Назад | Перейти на главную страницу

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

Чтобы выяснить, почему Эта проблема происходит следующая команда выполняется в контейнере:

docker run -it <dockerImageName> dmesg

приводит к:

dmesg: read kernel buffer failed: Permission denied

Попытки

  1. Бег docker run -it <dockerImageName> sudo dmesg возвращает ту же проблему

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

Тем не менее, я знал, что немного сложнее заставить SystemD работать внутри контейнера из Вот

Мне удалось заставить SystemD работать внутри образа, созданного из centos: centos7 с помощью:

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

По какой-то недокументированной причине, очевидно, требуется переменная container = docker. Также требуется / sys / fs / cgroup, поскольку SystemD требует cgroups для правильной работы в соответствии с RedHat Bug 1033604.

После этого попробуйте войти в контейнер, используя docker exec -it <container> /bin/bash и тогда вы можете выполнить свой systemctl команды.