将主机IP地址返回到docker包含systemd配置文件

时间:2015-09-15 14:32:07

标签: docker systemd

是工作系统配置文件,需要当前docker主机服务器的参数。我尝试了以下,当我直接运行时它对我很好。

docker run -p 5555:5555 -e REMOTE_HOST="http://`/bin/hostname --ip-address`:5555" -e HUB_PORT_4444_TCP_ADDR=selhub.stage.internal -e HUB_PORT_4444_TCP_PORT=4444 --name=stage_selff stage_selff

但是当我尝试将其添加到systemctl文件中时,

[Unit]
Description=Selenium node container
Requires=docker.service
After=docker.service

[Service]
Restart=on-failure
RestartSec=10
ExecStartPre=-/usr/bin/docker kill stage_selff
ExecStartPre=-/usr/bin/docker rm stage_selff
ExecStart=/usr/bin/docker run -p 5555:5555 -e REMOTE_HOST="http://`/bin/hostname --ip-address`:5555" -e HUB_PORT_4444_TCP_ADDR=selhub.stage.internal -e HUB_PORT_4444_TCP_PORT=4444 --name=stage_selff stage_selff
ExecStop=-/usr/bin/docker stop stage_selff

[Install]
WantedBy=multi-user.target

它无法正常工作,我找不到清楚的日志原因,但我猜测`运算符不被systemctl接受

以下是systemctl记录的内容

Sep 15 01:27:06 docker[831]: 21:27:06.337 INFO - Launching a Selenium Grid node
Sep 15 01:29:06 docker[831]: 21:29:06.668 WARN - error getting the parameters from the hub. The node may end up with wrong timeouts.Connect 
Sep 15 01:29:06 docker[831]: 21:29:06.675 INFO - Java: Oracle Corporation 25.45-b02
Sep 15 01:29:06 docker[831]: 21:29:06.678 INFO - OS: Linux 3.16.0-4-amd64 amd64
Sep 15 01:29:06 docker[831]: 21:29:06.690 INFO - v2.47.1, with Core v2.47.1. Built from revision 411b314
Sep 15 01:29:06 docker[831]: 21:29:06.735 INFO - Driver provider org.openqa.selenium.ie.InternetExplorerDriver registration is skipped:

1 个答案:

答案 0 :(得分:0)

该构造不起作用,因为ExecStart并且它的兄弟姐妹(如ExecStartPreExecStop等)不使用shell进行操作,而是使用execve(3)系统调用。这意味着像$(command)>>><等其他shell构造无效。

有关详细信息,请参阅Command lines

您可以尝试使用EnvironmentEnvironmetFile选项从单元文件外部传递值。