我工作的地方阻止了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,虽然我不怀疑任何错误)
答案 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