docker容器DNS的解决全过程
作者:IT杂人
容器默认继承宿主机DNS配置,修改宿主机/etc/resolv.conf后容器文件不自动同步,显式挂载时,使用echo修改避免inode变化,确保容器生效,可借助stat命令查看inode信息,并通过docker启动配置管理文件映射
创建容器时指定DNS
#docker-compose dns: - 8.8.8.8 - 8.8.4.4
#docker run方式 --dns=8.8.8.8 --dns=8.8.4.4
使用默认的方式
会自动加载宿主机的/etc/resolv.conf内容到到容器
但修改宿主机的/etc/resolv.conf文件,不会同步更新到容器里的/etc/resolv.conf;
使用显示挂载的方式
修改宿主机时使用echo,因为使用vi会改变inode,修改后并不会相应变化到容器
#映射文件 "/etc/resolv.conf:/etc/resolv.conf" #通过echo的方式修改宿主机文件 echo "nameserver 8.8.8.8" >> /etc/resolv.conf
设置docker启动配置
#vi /etc/docker/daemon.json,增加配置: "dns" : ["114.114.114.114","8.8.8.8"]
附:
查看文件inode信息
stat filename
vi和echo对映射文件的影响
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。