Tengo un contenedor Docker que ejecuta systemd . Quiero pasar variables de entorno a las aplicaciones que se encuentran debajo.
Cuando inicio systemd desde Docker ( /sbin/init
como línea de comando), Docker expone las variables a systemd, pero no a los servicios secundarios . Si agrego systemd.setenv=...
al cmdline, se pasan las variables. Estoy buscando una solución más limpia.
¿Cómo expongo las variables de entorno transmitidas /sbin/init
a las aplicaciones iniciadas por este?
% docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged -ti \
-e VAR1=1 motiejus/systemd_fedora20 \
init systemd.setenv=VAR2=2
...
Welcome to Fedora 20 (Heisenbug)!
...
[ OK ] Reached target Multi-User System.
[root@740690365eb0 ~]# env | grep VAR
VAR2=2
Espero ver VAR1=1
mientras ejecuto mi comando.
En otras palabras, ¿puede systemd pasar variables que se le pasan a los niños que comienza?
Para Dockerfile, vea el repositorio de github .