上一篇有說明可以在container run時指定dns server,如果要自建hostname-ip的dns服務而啟動bind,就增加很多傳統管理議題,因為bind對container架構還是多了,所以我們要找cloud-native的方案
想找到相關的方案,可以從CNCF的landscape
我們找到畢業的專案 CoreDNS,代表應該是比較成熟的方案
https://coredns.io/manual/toc/
官方的手冊相當簡單,沒有針對docker啟動的方式有多少說明,所以我們先猜測entrypoint可能停留在coredns 這個binary指令
其實經由docker hub檢視layer的說明,也可以看出來
docker run -it --rm coredns/coredns
答對了,不過我們對coredns還是不熟,所以下一下指令看有什麼參數可以使用
docker run -it --rm coredns/coredns --help
但出現一個問題:要怎麼讓容器抓到我們放在host的coredns.conf???
經由dockerhub看到的layer資訊跟github,也許可以經由容器裡頭的/home/nonroot,將HOST pwd的路徑取得coredns.conf
docker inspect coredns/coredns
我們來設定一下coredns.conf
.:1054 {
bind lo
whoami
}
.:1054 {
bind eth0
whoami
}
這是官方的範例,我們來啟動來測試:
docker run -it --rm -v $(pwd):/home/nonroot coredns/coredns -dns.port=1054 -conf=coredns.conf
看起來啟動成功了,後面我們來深入了解coredns可以作到的事情有哪些,以及容器如何使用它。