我工作的地方阻止了Docker的默认DNS(例如8.8.8.8),所以我想更改默认值。我已经能够这样做了
$ docker daemon --dns <mydnsaddress>
但我想使用systemd drop-in来实现这一点,因为官方Docker文档推荐这种方式。我制作了一个/etc/systemd/system/docker.service.d/dns.conf
文件,并使用了这样的东西:
[Service]
DNS=<mydnsaddress>
但我只是不知道变量名应该是什么。我该如何设置?更重要的是,是否有一个页面记录了可以在Docker的systemd drop-ins中使用的所有配置变量?
(顺便说一句,这是Ubuntu 15.10上的Docker 1.9,虽然我不怀疑任何错误)
.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.1
是dns服务器的ip。
现在通过systemctl重新启动docker,现在应该使用自己的dns重新启动docker。 (可通过systemctl status docker.service | grep dns
查询)。
请注意,空ExecStart=
是必需的,因为如果首先清除ExecStart,则systemctl将仅否决它。
另请注意,在systemctl daemon-reload
中编辑文件后需要使用/etc/systemd/system/
。
最后一点是,在某些系统上,docker.service
不是位于/usr/lib/systemd/system/
,而是位于/lib/systemd/system/
。
是的,我同意@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