Bug Fixes
lager installno longer writes a DNS server Docker cannot parse. The installer copies the box’s upstream resolvers into/etc/docker/daemon.jsonso image builds resolve reliably, but it previously trusted every value systemd-resolved reported. On a network that advertises DNS over IPv6 router advertisement, that includes a link-local resolver with a zone id (fe80::1%3) — and Docker refuses to start when anydnsentry is not a bare IP address, rather than skipping it. Becausedaemon.jsonpersists, the daemon stayed down across reboots, and re-running the installer undid any manual repair. Resolvers are now validated before they are written; link-local, loopback and unparseable values are dropped and named in the install log.- A Docker DNS change that doesn’t take is rolled back.
daemon.jsonis backed up first, and if Docker will not start with the new configuration, the previous file is restored and Docker is restarted on it. Pointing Docker at the box’s resolvers is an optimization, and it can no longer leave a box worse off than it found it. - The installer stops when the box’s Docker daemon is down. Previously it continued for six more steps and failed with a bare “Cannot connect to the Docker daemon” from
start_box.sh, far from the actual cause. It now checks the daemon before deploying and reports the commands needed to diagnose it.
Improvements
- The Docker DNS logic moved into
configure_docker_dns.sh/configure_docker_dns.pyand is covered by unit tests. - The install step counter no longer prints
[8/7].

