一尘不染

在具有systemd的OS上为Docker守护程序设置DNS

docker

Docker的默认DNS(例如8.8.8.8)在我工作的地方被阻止,因此我想更改默认值。我已经能够使用

$ docker daemon --dns <mydnsaddress>

但是我想使用systemd插件代替它,因为官方Docker文档推荐这种方式。我已经制作了一个/etc/systemd/system/docker.service.d/dns.conf文件,并使用了以下内容:

[Service]
DNS=<mydnsaddress>

但是我只是不知道变量名应该是什么。我该如何设置?更重要的是,是否有一个页面记录了可在Docker的systemd插件中使用的所有配置变量?

(顺便说一句,这是Ubuntu 15.10上的Docker 1.9,尽管我不怀疑有任何错误)


阅读 327

收藏
2020-06-17

共1个答案

一尘不染

所有.conf文件都将覆盖文件中/etc/systemd/system/docker.service.d的设置/usr/lib/systemd/system/docker.service,这几乎是您尝试过的。

而不是把一个的DNS=..线,你需要将复制ExecStart=部分从/usr/lib/systemd/system/docker.service文件dns.conf(或mydocker.conf)。--dns $ip在的daemon部分之后添加ExecStart。例如:

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --dns 192.168.1.1 -H fd://

其中192.168.1.1dns服务器的IP。

现在通过systemctl重新启动docker,并且docker现在应该使用您自己的dns重新启动。(可通过检查systemctl status docker.service | grep dns)。

请注意,此ExecStart=字段为空是必需的,因为只有先清除后,systemctl才会否决ExecStart。

另请注意,systemctl daemon-reload在中编辑文件后需要a /etc/systemd/system/

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

2020-06-17