情境
Windows Container 執行起來的時候,DNS Server 預設會吃 Host 的設定,但第一組會擺 Default Gateway 的 IP
但會碰到當在解析 IP 時,只會走第一組 Name Server 去問,如果問不到並不會問第二組,導致解析失敗
(需明確指定 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 |
這時候在重新查一次 IP ,不用特別指定 Name Server 就正確了
同場加映
這邊特別介紹 dns_search 這個 docker 參數
因為公司測試機都有加入 AD 群組,所以伺服器別名即便不寫全名還是可以查的到,但在 Container 內就不是這麼回事了,必須寫完整的全名不可,原本以為要改 Config ,請大家都寫完整,還好同事提醒有這個參數可以使用。
只要在 Docker Run 時或是 Docker Compose 設定加上 Domain Name,這樣 Container 找不到時就會加上 Domain Name 在完整搜尋一次
1 | dns_search: your.domain |
這參數又拯救了 IT 狗的一天…