为systemd上的OS设置Docker守护进程的DNS
Docker的默认DNS(例如8.8.8.8)在我工作的地方被阻塞,所以我想改变默认值。 我已经能够做到这一点使用
$ docker daemon --dns <mydnsaddress>
但是我想用systemd插件来做,因为官方的Docker文档是这样推荐的。 我已经做了一个/etc/systemd/system/docker.service.d/dns.conf
文件,并使用这样的东西:
[Service] DNS=<mydnsaddress>
但我不知道variables名应该是什么。 我如何设置? 更重要的是,是否有一个页面可以logging可以在Docker的systemd插件中使用的所有configurationvariables?
(顺便说一句,这是Ubuntu 15.10上的Docker 1.9,虽然我不怀疑有任何bug)
/etc/systemd/system/docker.service.d
所有.conf
文件/etc/systemd/system/docker.service.d
了/usr/lib/systemd/system/docker.service
文件中的设置,这几乎是您的尝试。
您不需要将DNS=..
放入,您需要将ExecStart=
part从/usr/lib/systemd/system/docker.service
文件复制到dns.conf
(或mydocker.conf
)。 在--dns $ip
的daemon
部分之后添加--dns $ip
。 例如:
[Service] ExecStart= ExecStart=/usr/bin/docker daemon --dns 192.168.1.1 -H fd://
192.168.1.1
是DNS服务器的IP地址。
现在通过systemctl重新启动docker,docker现在应该用你自己的dns重新启动。 (可以通过systemctl status docker.service | grep dns
来systemctl status docker.service | grep dns
)。
请注意,空ExecStart=
是必需的,因为systemctl只会在ExecStart被清除时才会取消ExecStart。
还要注意,在/etc/systemd/system/
编辑文件之后需要systemctl daemon-reload
。
最后一点是,在某些系统上, docker.service
不在/usr/lib/systemd/system/
,而是在/lib/systemd/system/
。