Tengo un systemd
contenedor en ejecución, y puedo iniciar sesión en él con machinectl login <container>
. ¿Cómo puedo ejecutar un comando dentro del contenedor directamente, es decir, sin primero iniciar sesión, ejecutar el comando y luego cerrar sesión?
Otra forma de decirlo es que estoy buscando el systemd
equivalente a:
$ docker exec <container> <command>
o
$ ssh <host> <command>
Respuesta aceptada:
Prueba systemd-run
:
# systemd-nspawn -D <machine-root> -b 3 --link-journal host
# systemd-run --machine <machine-name> env
Running as unit run-1356.service.
# journalctl --machine <machine-name> -u run-1356 -b -q
Oct 30 07:45:09 jessie-64 systemd[1]: Started /usr/bin/env.
Oct 30 07:45:09 jessie-64 env[37]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Extracto de la página de manual:
Use shell (vea a continuación) o systemd-run(1) con el interruptor –machine=para invocar directamente un solo comando, ya sea de forma interactiva o en segundo plano.
(El comando shell
disponible desde v225)