systemd y systemctl dentro de las imágenes de Ubuntu Docker [cerrado]


Parece que systemd no está activo ni disponible en las imágenes de Ubuntu Docker.

Estoy ejecutando contenedores Docker desde las imágenes ubuntu:16.04 y ubuntu:16.10.

Si ejecuto systemctl status ssh en el contenedor 16,04 el resultado es el error Failed to connect to bus: No such file or directory. En el contenedor 16.10 el error es bash: systemctl: command not found.

Si lo hago which systemctl systemctl se encuentra en el contenedor 16.04 pero no en el contenedor 16.10.

He visto que /lib/systemd existe.

He intentado instalar systemd con apt-get install systemd libpam-systemd systemd-ui. Entonces which systemctl encuentra systemctl en 16.10 pero systemctl status ssh todavía da el error Failed to connect to bus: No such file or directory

Mi pregunta principal es: ¿Cómo se pueden activar systemd y systemctl para su uso en imágenes de Ubuntu Docker?

¿Por qué systemd no está activo en los contenedores Ubuntu Docker? Systemd no se utiliza en la creación de instancias del contenedor?

No he podido encontrar ninguna documentación sobre este tema para las imágenes de Ubuntu / Ubuntu Docker, solo información sobre la transición de Ubuntu de Upstart a systemd. ¿Hay alguna documentación dando una explicación completa?

Author: Duncan Gravill, 2016-08-26

1 answers

Esto es por diseño. Docker debería estar ejecutando un proceso en primer plano en su contenedor y se generará como PID 1 dentro del espacio de nombres pid del contenedor. Docker está diseñado para el aislamiento de procesos, no para la virtualización del sistema operativo, por lo que no hay otros procesos y demonios del sistema operativo que se ejecuten dentro del contenedor (como systemd, cron, syslog, etc.), solo su punto de entrada o comando que ejecute.

Si incluyeran comandos systemd, encontrarías muchas cosas que no funcionarían desde tu punto de entrada reemplaza a init. Systemd también hace uso de cgroups que docker restringe dentro de contenedores ya que la capacidad de cambiar cgroups podría permitir que un proceso escape del aislamiento del contenedor. Sin systemd ejecutándose como init dentro de tu contenedor, no hay demonio para procesar tus comandos start y stop.

 35
Author: BMitch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 14:58:15