前言
今天领导发现了一个docker的问题,他在用apline作为基础镜像的时候,在公司的服务器上无法ping baidu.com
但是我们却是能在nslookup中解析到域名。
问题1. ping baidu.com
在用apline作为基础镜像的时候,发现无法ping的情况,在我翻阅了一些文献的。说到了docker-apline是以8.8.8.8
Google的dns服务作为默认网关。
又由于我国具有“墙”的特性,所以我们需要指定国内的dns服务器,例如114.114.114.114
,但是这些并不能解决我们的问题。
又有一些网友说是因为我们自己的dns网关服务不正常导致的,但是确实我们的dns服务一直很正常。
基于了这些都不能解决我们问题点。基于感觉到了没有任何希望。
但是后来还是找到了一些另类的解决思路。
例如有一批人提到了/etc/resolve.conf
的ndots
的参数。
于是好奇的搜索了一些ndots
相关的内容,发现这个是用于优化dns解析速度
的参数。
ndots
options ndots:0
稍微有点麻烦,我查了一些资料。如果需要查找域名是相对域名,且该域名中包含的. 的数目大于或等于 option ndots:${n}
命令指定的数,则查询的仅是该域名。否则会依次往传入的域名后追加 search 列表(search 列表在这里没有,详见search
)中的后缀,直到解析出ip地址,或者解析完列表中所有后缀才会停止。这里设置成 0,意思就是对于传入的相对域名,只查询该域名。
一般ndots都是5即可。最高就是15。
默认:1
1 | ndots:n |
于是抱着尝试的态度。
没有加入参数前
1 | [root@webapp_public_S1_192.168.8.135_61618_A ~]# docker run -it --rm composer:2.0 ping baidu.com |
加入参数后
1 | [root@webapp_public_S1_192.168.8.135_61618_A ~]# docker run -it --dns-opt=ndots:5 --rm composer:2.0 ping baidu.com |
神奇的一幕出现了,dns服务正常解析了。于是可以确定ndots在解决apline域名解析上有重要的作用。