tutorial listar imagenes imagen hub crear contenedor ubuntu docker systemd ubuntu-server systemctl

listar - systemd y systemctl dentro de las imágenes de Ubuntu Docker



imagenes docker (1)

Parece que systemd no está activo o 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 existe Failed to connect to bus: No such file or directory . En el contenedor 16.10 , el error es bash: systemctl: command not found .

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

He descubierto 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 el systemctl status ssh todavía muestra el error Failed to connect to bus: No such file or directory systemctl status ssh Failed to connect to bus: No such file or directory

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

¿Por qué systemd no está activo en los contenedores de Ubuntu Docker? ¿No se utiliza systemd para crear instancias del contenedor?

No pude 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 que dé una explicación completa?


Esto es por diseño. Docker debería ejecutar 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 del sistema operativo y demonios ejecutándose dentro del contenedor (como systemd, cron, syslog, etc.), solo su punto de entrada o comando que ejecuta.

Si incluían comandos systemd, encontraría que muchas cosas no funcionan ya que su punto de entrada reemplaza init. Systemd también hace uso de cgroups que Docker restringe dentro de los 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 su contenedor, no hay demonio para procesar sus comandos de inicio y detención.