使用 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
) .在 ExecStart
的 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
检查)。
请注意,空 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
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
) .在 ExecStart
的 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
检查)。
请注意,空 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