Automatic DNS for all Docker containers - access any container by name
1.7K
Automatic DNS for Docker containers. Access any container by name: curl http://myapp.docker instead of hardcoding IPs or relying on Docker's internal DNS.
Docker's built-in DNS only works within the same Compose network. Cross-network, cross-project, and host-to-container DNS doesn't exist. You end up hardcoding IPs or creating massive shared networks. Docker-dns solves this by running a local DNS server that automatically resolves container names to IPs.
services:
dns:
image: zachbg/docker-dns:latest
restart: unless-stopped
ports:
- "53:53/udp"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
DNS_DOMAIN: docker
Then configure your system to use it:
macOS:
sudo mkdir -p /etc/resolver
echo "nameserver 127.0.0.1" | sudo tee /etc/resolver/docker
Linux:
Add to /etc/resolv.conf:
nameserver 127.0.0.1
Now: curl http://myapp.docker, ping postgres.docker, dig redis.docker
| Variable | Default | Description |
|---|---|---|
DNS_DOMAIN | docker | Domain suffix (e.g., .docker, .local, .dev) |
DNS_UPSTREAM | 8.8.8.8 | Upstream DNS for non-Docker queries |
DNS_TTL | 60 | Cache TTL in seconds |
DNS_SYNC_INTERVAL | 5 | Seconds between container scans |
DNS_LOG_QUERIES | false | Log all DNS queries |
DNS_LABEL | Only resolve labeled containers |
| Label | Description |
|---|---|
dns.hostname=myapp | Custom hostname (instead of container name) |
environment:
DNS_DOMAIN: dev
# Access: myapp.dev, postgres.dev, redis.dev
services:
webapp:
image: nginx
labels:
dns.hostname: "app"
# Access: app.docker
services:
dns:
image: zachbg/docker-dns:latest
environment:
DNS_LABEL: "dns.enable"
webapp:
image: nginx
labels:
dns.enable: "true"
# Only webapp gets DNS, other containers are ignored
# Project A (docker compose -p projecta up)
projecta-web-1.docker -> 172.18.0.2
# Project B (docker compose -p projectb up)
projectb-api-1.docker -> 172.19.0.3
# From your host:
curl http://projecta-web-1.docker
curl http://projectb-api-1.docker
Content type
Image
Digest
sha256:8395364fa…
Size
14.6 MB
Last updated
6 months ago
docker pull zachbg/docker-dns