为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 $ipdaemon部分之后添加--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 dnssystemctl status docker.service | grep dns )。

请注意,空ExecStart=是必需的,因为systemctl只会在ExecStart被清除时才会取消ExecStart。

还要注意,在/etc/systemd/system/编辑文件之后需要systemctl daemon-reload

最后一点是,在某些系统上, docker.service不在/usr/lib/systemd/system/ ,而是在/lib/systemd/system/