Accediendo a las utilidades del sistema desde Docker

Accediendo a las utilidades del sistema desde Docker

Estoy creando un contenedor acoplable que debería mostrar información sobre el estado del sistema en una página web.

Tengo un contenedor PHP-fpm y NGINX en ejecución. Si uso shell_execo execel script .sh que hice se encuentra y se ejecuta.

Sin embargo, no muestra el resultado de hddtempy (lm-)sensors. Probablemente porque no existen en el contenedor PHP.

¿Cuál sería la forma correcta de solucionar este problema?

  • Mi colega afirmó que en Linux, "todo es un archivo", pero supongo que no puedo simplemente montar estas aplicaciones en el contenedor php-fpm y esperar que funcionen. También suena bastante complicado y es posible que el contenedor php-fpm no sea el mismo sistema operativo, no cumpla con los requisitos o no pueda ejecutar la 'configuración de sensores'.
  • Por supuesto, podría ejecutar estas aplicaciones en el sistema operativo principal y escribir los resultados en un archivo de vez en cuando y montarlo en el contenedor. Pero otra vez; ¿Esto anula el propósito de Docker?
  • Supongo que podría crear mi propia versión de PHP-fpm, pero esto significaría que tendría que recrearla cada vez que haya una actualización para PHP. Esto también suena un poco a truco.

Entonces, ¿cuál sería la forma correcta de hacer esto (no tiene que ser ninguna de las anteriores)?


Actualmente tengo la siguiente 'solución de trabajo':

(Docker componer)

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"));

Sin embargo; en este caso tengo que ejecutar PHP en modo 'privilegiado' en la ventana acoplable, siento que esto está mal, pero ¿necesita acceder a diskinfo?

Respuesta1

No son los comandos los que faltan. Puede poner copias de los comandos en el contenedor. O su equivalente. Lo que falta es acceso a la información que necesitan.

Puede agregar este mi montaje /procdesde el host al contenedor.Ten cuidado, ya que esto romperá todo el aislamiento.. Es posible que puedas montarlo como de solo lectura y hidepid=2. También puede haber otras opciones.

información relacionada