使用systemd在OS上为Docker守护程序设置DNS

时间:2015-11-18 15:39:58

标签: dns docker systemd

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

做到这一点
data.imageheaders

但是我想使用systemd drop-in来实现这一点,因为官方Docker文档推荐这种方式。我创建了一个$ docker daemon --dns <mydnsaddress> 文件,并使用了这样的东西:

/etc/systemd/system/docker.service.d/dns.conf

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

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

2 个答案:

答案 0 :(得分:37)

.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的{​​{1}}部分之后添加daemon。 E.g:

ExecStart

[Service] ExecStart= ExecStart=/usr/bin/docker daemon --dns 192.168.1.1 -H fd:// 是dns服务器的ip。

现在通过systemctl重新启动docker,现在应该使用自己的dns重新启动docker。 (可通过192.168.1.1检查。)

请注意,空systemctl status docker.service | grep dns是必需的,因为如果首先清除ExecStart,则systemctl将否决它。

另请注意,在ExecStart=编辑文件后需要systemctl daemon-reload

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

答案 1 :(得分:0)

是的,我同意@steviethecat给出的先前答案,但是在docker重新启动时,此设置将覆盖默认值,因此我按照以下步骤操作。使用Docker 18.09.2版

我关注了链接https://success.docker.com/article/using-systemd-to-control-the-docker-daemon

sudo systemctl edit docker //this opens new file use as overwrite file.

添加以下行。设置此值之前,请确保您具有ExecStart =。上面给出的链接有详细信息。

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

一旦将以上行添加到文件中,请在以下行执行。

sudo systemctl daemon-reload
systemctl restart docker
systemctl status docker