這可以通過爲您的DNS服務器地址提供docker插件配置來解決。請注意,下面的示例使用虛擬IP地址;請用您的實際IP地址替換。
pipeline:
docker:
image: plugins/docker
custom_dns: [ 10.10.0.1, 10.10.0.2 ]
如果您使用的是企業版,您可以配置以下全局環境變量:
- name: PLUGIN_CUSTOM_DNS
value: 10.10.0.1,10.10.0.2
爲什麼是這個必要嗎?
爲什麼這個問題在一些配置中表面而不是其他的?在這些情況下,爲什麼DNS配置不會在Docker中傳播到Docker?爲什麼這個工作與默認網橋,但不是用戶定義的網絡?不幸的是我目前無法提供根本原因,但可以提供一些可能解釋行爲的信息...
看起來配置DNS的邏輯可能會有所不同,具體取決於您的Docker版本,主機配置等
Docker如何管理容器內的DNS配置的確切細節可以從一個Docker版本更改爲下一個。所以你不應該假定/ etc/hosts,/etc/resolv.conf這樣的文件在容器內部被管理,並且保持文件不變,而是使用下面的Docker選項。
它似乎也默認橋網絡並通過設計表現比用戶定義的橋網絡的不同:
爲了保持向後兼容,在默認橋式網絡的DNS配置被保留,沒有行爲更改。有關默認橋接網絡中DNS配置的更多信息,請參閱默認橋接網絡中的DNS。
我希望我能爲這個問題提供詳細的技術根本原因,並希望有人可以填補這個答案的空白。同時,請使用上述的解決方法。