我想用systemd覆盖的方式让dockerd监听2376端口。所以我按照这个指令。
另一方面,我想深入了解 systemd 以了解幕后发生的事情。所以我试图通过这个命令检查 docker 的单元文件:systemctl cat docker.service
根据命令的输出,涉及到两个文件。
我相信第一个是 docker 的默认单元文件,第二个是我创建的。
我的问题是:两个文件都包含句子 -ExecStart=
在第二个文件中包含两次,例如:
ExecStart=
ExecStart=/usr/bin/dockerd -H fd://
ExecStart=
在设置有意义的值之前是否需要分配空ExecStart=/usr/bin/dockerd -H fd://
?
我把这篇文章分成两个问题,另一个在这里。
将条目添加到覆盖文件时,它们默认附加到任何现有条目。也就是说,如果您的服务example.service
具有:
[Service]
EnvironmentFile=/etc/foo.env
你创建/etc/systemd/system/example.service.d/override.conf
:
[Service]
EnvironmentFile=/etc/bar.env
那么有效的配置是:
[Service]
EnvironmentFile=/etc/foo.env
EnvironmentFile=/etc/bar.env
对于许多指令来说这很好,但是一个服务只能有一个ExecStart
(除非它是一个Type-oneshot
服务),所以如果你尝试创建一个像这样的覆盖文件:
[Service]
ExecStart=/new/command/line
这将失败并出现以下错误:
systemd: example.service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
通过指定一个空的 ExecStart
,您正在“清除”所有以前的条目。所以如果你example.service
有:
[Service]
ExecStart=/bin/foo
然后您创建一个覆盖,如:
[Service]
ExecStart=
ExecStart=/bin/bar
有效配置为:
[Service]
ExecStart=/bin/bar
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句