After installing Docker package docker.io
from official Ubuntu repo and then removing it (to install the latest version from Docker's own repo instead), I found that my server could not resolve hostnames anymore (back then I didn't know yet it was caused by Docker though). After reboot, /etc/resolv.conf
was blank, although files in /etc/network/interfaces.d/*
files were intact and contained the correct DNS servers.
/etc/resolv.conf
nowadays is actually a symlink to a file managed by resolvconf
, which is being passed DNS server list by ifup
on reboot.
What happened is, docker.io
package depends on ubuntu-fan
package which installs /etc/network/if-up.d/ubuntu-fan
script to be called by ifup
(and other scripts for ifdown
, etc.). When I removed Docker and then ran apt autoremove
, it removed ubuntu-fan
package, but left the scripts. On next reboot, ifup
tried to execute them, but the actual fanctl
executable was no longer there, ifup
was half-failing and not calling resolvconf
, although the interface was up (I'm not sure why, as /etc/network/if-up.d/000resolvconf
should be called first and not affected by later scripts).
The solution is to run apt-get purge ubuntu-fan
which will delete residual configuration files, and restart the server.