1) Я запускаю Docker-контейнер со следующим cmd (передаю несколько переменных env с опцией -e)
$ docker run --name=xyz -d -e CONTAINER_NAME=xyz -e SSH_PORT=22 -e NWMODE=HOST -e XDG_RUNTIME_DIR=/run/user/0 --net=host -v /mnt:/mnt -v /dev:/dev -v /etc/sysconfig/network-scripts:/etc/sysconfig/network-scripts -v /:/hostroot/ -v /etc/hostname:/etc/host_hostname -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock --privileged=true cf3681e04bfb
2) После запуска контейнера, как указано выше, я проверяюпеременная env NWMODE внутри контейнера, и она отображается правильно, как показано ниже:
$ docker exec -it xyz bash
$ env | grep NWMODE
NWMODE=HOST
3) Теперь я создал показанный ниже пример службы 'b', которая выполняет скрипт b.sh (где я пытаюсь получить доступ к NWMODE):
root@ubuntu16:/etc/systemd/system# cat b.service
[Unit]
Description=testing service b
[Service]
ExecStart=/bin/bash /etc/systemd/system/b.sh
root@ubuntu16:/etc/systemd/system# cat b.sh
#!/bin/bash`
systemctl import-environment
echo "NWMODE:" $NWMODE`
4) Теперь, если я запускаю службу 'b' и вижу ее журналы, это показывает, что она не может получить доступ к переменной env NWMODE
$ systemctl start b
$ journalctl -fu b
...
systemd[1]: Started testing service b.
bash[641]: NWMODE: //blank for $NWMODE here`
5) Теперь вместо 'systemctl import-environment' в b.sh, если я делаю следующее, журналы b.service показывают правильное значение переменной enw NWMODE: $ systemctl import-environment
$ systemctl start b
Хотя вышеприведенный шаг 5 работает, я не могу пойти на это, так как все службы в моей системе будут автоматически запускаться systemd.В таком случае, может кто-нибудь, пожалуйста, дайте мне знать, как я могу получить доступ к переменным окружения (переданным с помощью команды «docker run ...» выше) в служебном файле (скажем, например, в b.sh выше).Можно ли это как-то добиться с помощью systemctl import-environment
или есть какой-то другой способ?