好久不见,最近一直在学校部署项目,快整成运维了,踩过了各种坑,天天加班,工资还不准时发,我真的**********。

图片-1668841626250

好了,回归正题。我一如往常的登上服务器,然后瞄了一眼docker容器运行情况(docker ps -a),结果发现数据库容器全停了,另一个服务器的也是这样。接着我就重启数据库的容器(docker restart 容器id/容器名称),结果报错:can not find ‘/etc/resolv.conf’ xxxx啥的。

/etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。

哎?这我就纳闷了,我就想看一下这个文件(cat /etc/resolv.conf),结果肯定是没有的。那我就新建一个吧(vim /etc/resolv.conf

nameserver 8.8.8.8 # 由于我部署的项目在内网,所以这些ip依据你的实际情况改变
nameserver 114.114.114.114

保存好文件之后,重启数据库容器,OK,大功告成!接着我就想为什么会突然消失掉,之前都好好的,为了稳定性我准备测试一下重启服务器(shutdown -r now)会不会有影响。

图片

哦豁,数据库容器又寄了,原因便是那个文件又没得了,我真的星星你个星星傻逼服务器。骂归骂还是得解决啊,谁叫我是打工仔。接下来就是解决方案

解决方案

# 解决这个问题需要安装resolvconf这个软件

# 搜索这个软件
apt-cache search resolvconf 

# 安装
apt-get install resolvconf

# 安装完成后添加配置文件
vim /etc/resolvconf/resolv.conf.d/base
# 输入
nameserver 8.8.8.8 # 由于我部署的项目在内网,所以这些ip依据你的实际情况改变
nameserver 114.114.114.114

vim /etc/default/resolvconf
# 输入
TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no

# 执行命令
resolvconf -u

执行完上述操作后,验证一下是否OK。重启networking(service networking restart),发现/etc/resolv.conf文件还存在。

准备试一下重启,这里别忘了设置开启自启动(systemctl enable resolvconf.service
重启完成后,发现文件还存在,OK解决!

Q.E.D.