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

Setting DNS for Docker daemon on OS with systemd

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

做到这一点
$ 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,尽管我不怀疑有任何错误)

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

无需放入 DNS=.. 行,您需要将 ExecStart= 部分从 /usr/lib/systemd/system/docker.service 文件复制到 dns.conf(或 mydocker.conf) .在 ExecStartdaemon 部分后添加 --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 检查)。

请注意,空 ExecStart= 是必需的,因为 systemctl 只会在先清除 ExecStart 时否决它。

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

最后要说的是,在某些系统上 docker.service 不在 /usr/lib/systemd/system/ 中,而是在 /lib/systemd/system/ 中。

是的,我同意@steviethecat 之前给出的答案,但是当 docker 重新启动时,这会将覆盖更改为默认值,所以我按照以下步骤操作。使用 Docker 版本 18.09.2,

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

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

添加以下行。在设置此值之前,请确保您有 ExecStart=。以上给出 link 有详细信息。

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

将以上行添加到文件后,执行以下行。

sudo systemctl daemon-reload
systemctl restart docker
systemctl status docker