Доступ к системным утилитам из Docker

Доступ к системным утилитам из Docker

Я создаю Docker-контейнер, который должен отображать информацию о состоянии системы на веб-странице.

У меня запущены PHP-fpm и NGINX-контейнер. Если я использую shell_execили execскрипт .sh, который я сделал, будет найден и выполнен.

Однако он не отображает вывод hddtempи (lm-)sensors. Скорее всего, потому, что они не существуют в контейнере PHP.

Как правильно это исправить?

  • Мой коллега заявил, что в Linux «все является файлом», но я не думаю, что я могу просто смонтировать эти приложения в контейнере php-fpm и ожидать, что они будут работать. Это также звучит довольно хакерски, и контейнер php-fpm может быть не той же ОС, не соответствовать требованиям, или я не смогу выполнить «настройку датчиков».
  • Конечно, я мог бы запускать эти приложения на основной ОС и записывать результаты в файл время от времени и монтировать его в контейнер. Но опять же, это противоречит цели docker?
  • Я полагаю, что я мог бы создать свою собственную версию PHP-fpm, но это означало бы, что мне пришлось бы пересоздавать ее каждый раз, когда будет обновление для php? Это также немного похоже на хак.

Итак, как же правильно это сделать (не обязательно что-то из вышеперечисленного)?


На данный момент у меня есть следующее «рабочее решение»:

(Docker-композиция)

php:
image: php:7-fpm
privileged: true
volumes:
    - /usr/sbin/hddtemp:/usr/sbin/hddtemp
    - /etc/hddtemp.db:/etc/hddtemp.db

(PHP)

var_dump(shell_exec("/usr/sbin/hddtemp /dev/sda 2>&1"));

Однако в этом случае мне придется запустить PHP в «привилегированном» режиме в Docker. Мне кажется, что это неправильно, но ему же нужен доступ к diskinfo?

решение1

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

Вы можете добавить это мое монтирование /procиз хоста в контейнер.Будьте осторожны, так как это нарушит всю изоляцию.. Вы можете смонтировать его только для чтения и hidepid=2. Могут быть и другие варианты.

Связанный контент