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

lab*_*nth 15 dns systemd docker

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

$ docker daemon --dns <mydnsaddress>
Run Code Online (Sandbox Code Playgroud)

但我想使用systemd drop-in来实现这一点,因为官方Docker文档推荐这种方式.我做了一个/etc/systemd/system/docker.service.d/dns.conf文件,并使用了这样的东西:

[Service]
DNS=<mydnsaddress>
Run Code Online (Sandbox Code Playgroud)

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

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

ste*_*cat 37

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

DNS=.. 您需要将文件中的ExecStart=部分复制/usr/lib/systemd/system/docker.servicedns.conf(或mydocker.conf),而不是放入一行.部分--dns $ip之后添加.例如:daemonExecStart

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --dns 192.168.1.1 -H fd://
Run Code Online (Sandbox Code Playgroud)

其中192.168.1.1是dns服务器的ip.

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

请注意,空ExecStart=是必需的,因为如果首先清除ExecStart,则systemctl将仅否决它.

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

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

  • 也可以将选项放在 `/etc/docker/daemon.json` 中。不幸的是,它的记录有点差;手册页中没有描述其格式,但 [在线文档](https://docs.docker.com/engine/reference/commandline/#daemon-configuration-file) 中有一些内容。 (3认同)
  • 谢谢你的作品.但这是非常令人费解的......在系统化之前,这是过去更容易的事情. (2认同)