2015-11-18 5 views
10

Der Standard-DNS für Docker (z. B. 8.8.8.8) ist blockiert, wo ich arbeite, also möchte ich den Standard ändern. Ich habe in der Lage gewesen, dieseEinstellung von DNS für Docker-Daemon unter OS mit Systemd

$ docker daemon --dns <mydnsaddress> 

mit zu tun, aber ich möchte, dies zu tun, ein systemd Drop-in anstatt verwenden, da der offiziellen Docker docs auf diese Weise empfehlen. Ich habe eine /etc/systemd/system/docker.service.d/dns.conf Datei gemacht und verwendet, um Dinge wie folgt aus:

[Service] 
DNS=<mydnsaddress> 

Aber ich habe keine Ahnung, was der Variablenname sein soll. Wie stelle ich das ein? Noch wichtiger ist, gibt es eine Seite, die alle Konfigurationsvariablen dokumentiert, die in Systemd-Drop-Ins für Docker verwendet werden können?

(btw, das ist Docker 1.9 auf Ubuntu 15.10, obwohl ich vermute, keine Bugs)

+1

Die Docker-Dokumentation beschreibt, wie die DOCKER_OPTS in der Datei/etc/default/docker eingestellt werden kann: https://docs.docker.com/engine/articles/configuring/ –

Antwort

27

Alle .conf Dateien in /etc/systemd/system/docker.service.d überstimmen die Einstellungen aus der /usr/lib/systemd/system/docker.service Datei, die fast, was Sie versucht.

Statt eine DNS=.. Linie in der Umsetzung, müssen Sie den ExecStart= Teil aus der /usr/lib/systemd/system/docker.service Datei zu dns.conf (oder mydocker.conf) kopieren. Fügen Sie --dns $ip nach dem daemon Teil der ExecStart hinzu. Z.B .:

[Service] 
ExecStart= 
ExecStart=/usr/bin/docker daemon --dns 192.168.1.1 -H fd:// 

Wo die 192.168.1.1 die IP des DNS-Servers ist.

Jetzt docker neu starten über systemctl und docker sollte jetzt mit ihren eigenen dns neu starten. (Überprüfbar über systemctl status docker.service | grep dns).

Beachten Sie, dass das leere ExecStart= erforderlich ist, da systemctl nur dann den ExecStart überschreibt, wenn es zuerst gelöscht wird.

Beachten Sie auch, dass ein systemctl daemon-reload nach dem Bearbeiten von Dateien in /etc/systemd/system/ benötigt wird.

Letzte Bemerkung ist, dass auf einigen Systemen docker.service nicht in /usr/lib/systemd/system/, sondern in /lib/systemd/system/ befindet.

+1

Vielen Dank, das funktioniert. Aber es ist ziemlich verworren ... das ist etwas, das früher einfacher war als systemd. –