because in the tradition there was a (forwarding) dns server somewhere in the local network to do caching for everybody.
nowadays most decent linux distributions have a very good caching dns resolver (systemd-resolved) so that's not an issue anymore.
To resolve names, you can ask /etc/hosts for the name / IP conversion; you can also ask DNS, or ldap or NIS; probably there are many I've forgotten about.
solaris: https://docs.oracle.com/cd/E19683-01/806-4077/6jd6blbbe/inde...
glibc: https://man7.org/linux/man-pages/man5/nsswitch.conf.5.html
musl appears to not have an nsswitch.conf or a way to configure name to number resolution behavior?
The fact that this model is still largely assumed is due to inertia.
Having a daemon would add complexity, take up RAM and CPU, and be unnecessary in general. There really weren't that many daemons running in the olden times.
DNS resolution is expected to be fast, since it's (supposed to be) UDP-based. It's also expected that there is a caching DNS resolver somewhere near the client machines to reduce latency and spread load (in the old days the ISP would provide them, then later as "home routers" became a thing, the "home router" provided them too).
Finally, as networks were fairly slow, you just didn't do a ton of network connections, so you shouldn't be doing a ton of DNS lookups. But even if you did, the DNS lookup was way faster than your TCP connection, and the application could cache results easily (I believe Windows did cache them in its local resolver, and nscd did on Linux/Unix)
If you really did need DNS caching (or anything else DNS related), you would just run Bind and configure it to your needs. Configuring Bind was one of the black arts of UNIX so that was avoided whenever possible :)
How many different programs in the same process space hit so many common external services individual caching of names is not sufficient?
Article lists a bunch of fun with systemd running junk in containers that seem counterproductive to me. A lot of systemd stuff seems to be stuff useful on a laptop that ends up where it's really not wanted.
Local dns caching seems like a solution looking for a problem to me. I disable it whereever I can. I have local(ish) dns caches on the network. But not inside lxc containers or Linux hosts.
There's also probably some savings around not having to convert between the structures used by gethostbyname and DNS questions&answers.