docker-external-dns is a lightweight, Go-based utility engineered to automatically synchronize DNS records from containerized environments to external DNS providers.
Inspired by kubernetes-sigs/external-dns, this tool bridges the gap for non-Kubernetes environments, providing the same automated DNS lifecycle management specifically tailored for standalone Docker and Docker Compose setups.
Lightweight & Fast: Written in Go, ensuring minimal resource utilization—perfect for high-performance computing nodes or specialized small form factor (SFF) deployments.
Dynamic Source Synchronization: Automatically discovers and syncs routing information directly from:
Standard Docker Containers
Traefik Reverse Proxy configurations
Multi-Provider Support: Seamlessly pushes DNS updates to your preferred endpoints, currently supporting:
Cloudflare (for external/public resolution)
Pi-hole (for internal/local resolution)
Automated Lifecycle: Eliminates the need for manual DNS record management. Records are dynamically created when services spin up and safely cleaned up when they are torn down.
Instead of manually updating your Pi-hole or Cloudflare dashboard every time you spin up a new service, Docker-External-DNS listens to your Docker socket. It looks for specific container labels or Traefik router configurations, extracts the requested hostnames, and automatically creates or updates the corresponding A/CNAME records in your configured DNS provider.
When a container is spun down or removed, the tool can clean up the stale DNS records, keeping your external DNS zone perfectly matched with your active infrastructure.
Advanced Homelabs: Streamlines self-hosted infrastructure. When paired with Traefik, it completely automates service visibility across both local networks and public boundaries without the overhead of provisioning full Kubernetes worker nodes.
Docker Compose Stacks: Simplifies the deployment of multi-container applications by handling DNS propagation automatically as part of the stack lifecycle.
Edge Deployments: The minimal Go binary footprint makes it highly effective for environments where resource efficiency and fast execution are critical.