0%

【Docker】Widows Container DNS Server 問題

/images/20190220/0.png

情境

Windows Container 執行起來的時候,DNS Server 預設會吃 Host 的設定,但第一組會擺 Default Gateway 的 IP

/images/20190220/1.png

但會碰到當在解析 IP 時,只會走第一組 Name Server 去問,如果問不到並不會問第二組,導致解析失敗

/images/20190220/2.png

(需明確指定 Name Server 才能查的到)

聽說這也是 Windows Container 才會碰到的問題,用 Linux 的同事們表示黑人問號 ???


解法

DotNet 人有 DotNet 人的玩法,果然找到有人有相同的問題

解法就是當 Container 執行起來的時候,用 Powershell 去改 DNS Server 設定 ….

恩 …. 就改吧

1
$ powershell  Set-DnsClientServerAddress -InterfaceAlias vEthernet* -ServerAddresses 10.2.x.x,10.2.x.x

執行完後重新查詢網路設定會看到 DNS Server 第一組已經不是 Default Gateway

1
$ ipconfig /all

/images/20190220/4.png

這時候在重新查一次 IP ,不用特別指定 Name Server 就正確了

/images/20190220/3.png

同場加映

這邊特別介紹 dns_search 這個 docker 參數

/images/20190220/5.png

因為公司測試機都有加入 AD 群組,所以伺服器別名即便不寫全名還是可以查的到,但在 Container 內就不是這麼回事了,必須寫完整的全名不可,原本以為要改 Config ,請大家都寫完整,還好同事提醒有這個參數可以使用。

只要在 Docker Run 時或是 Docker Compose 設定加上 Domain Name,這樣 Container 找不到時就會加上 Domain Name 在完整搜尋一次

1
dns_search: your.domain

這參數又拯救了 IT 狗的一天…