Setting DNS for Docker daemon on OS with systemd
Yes I agreed to previous answer given by @steviethecat but this changes overwrite to default when docker restart so I followed below steps. Using Docker version 18.09.2,
I followed link https://success.docker.com/article/using-systemd-to-control-the-docker-daemon
sudo systemctl edit docker //this opens new file use as overwrite file.
add below lines. Make sure you have ExecStart= before setting this value. Above given link having details.
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --dns 192.168.1.1 -H fd://
once above lines added to file, execute below lines.
sudo systemctl daemon-reload
systemctl restart docker
systemctl status docker
All .conf
files in /etc/systemd/system/docker.service.d
overrule the settings from the /usr/lib/systemd/system/docker.service
file, which is almost what you tried.
Instead of putting a DNS=..
line in, you need to copy the ExecStart=
part from the /usr/lib/systemd/system/docker.service
file to dns.conf
(or mydocker.conf
). Add --dns $ip
after the daemon
part of the ExecStart
. E.g.:
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --dns 192.168.1.1 -H fd://
Where the 192.168.1.1
is the ip of the dns server.
Now restart docker via systemctl and docker should now restart with your own dns. (Checkable via systemctl status docker.service | grep dns
).
Note that the empty ExecStart=
is required, as systemctl only will overrule the ExecStart if it is cleared first.
Also note that a systemctl daemon-reload
is needed after editing files in /etc/systemd/system/
.
Last remark is that on some systems docker.service
is not located in /usr/lib/systemd/system/
, but in /lib/systemd/system/
.