在實際的開發過程中,可能會碰到以下的使用場景:
宿主機器可以正常的解析域名,但是容器里面無法解析域名,只能解析ip。碰到這種情況基本的思路有兩個,一是從hosts文件下手,加入新的映射關系;一是從resolv.conf文件入手,也就是修改DNS服務器(如果是windows系統,則需要在網絡配置里面手動輸入DNS服務器地址)。
- Docker修改DNS
如果用戶是在Dockerfile里面修改/etc/resolv.conf、/etc/hosts以及/etc/hostname文件,均不會生效。每一次啟動容器上述三個文件都會被虛擬文件覆蓋。參考文章“深入淺出”來解讀Docker網絡核心原理
此時如果需要修改容器的dns有以下兩種方法:
1、 在啟動容器的同時,指定dns參數
docker run --dns 10.0.0.2 --name mybusybox busybox:latest
2、 修改宿主機器的docker配置
cat /etc/docker/daemon.json
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
sudo service docker restart