在实际的开发过程中,可能会碰到以下的使用场景:
宿主机器可以正常的解析域名,但是容器里面无法解析域名,只能解析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