Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gliderlabs/resolvable
Host-level DNS gateway for Docker
https://github.com/gliderlabs/resolvable
Last synced: 27 days ago
JSON representation
Host-level DNS gateway for Docker
- Host: GitHub
- URL: https://github.com/gliderlabs/resolvable
- Owner: gliderlabs
- License: mit
- Created: 2015-03-03T00:19:42.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2016-11-22T19:04:39.000Z (about 8 years ago)
- Last Synced: 2024-11-03T21:34:33.189Z (about 1 month ago)
- Language: Go
- Homepage:
- Size: 68.4 KB
- Stars: 315
- Watchers: 10
- Forks: 37
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-consul - resolvable: Host-level DNS gateway for Docker
- awesome-starred - gliderlabs/resolvable - Host-level DNS gateway for Docker (others)
README
# Resolvable - Docker DNS resolver
A simple DNS server to resolve names of local Docker containers.
`resolvable` is intended to run in a Docker container:
docker run -d \
--hostname resolvable \
-v /var/run/docker.sock:/tmp/docker.sock \
-v /etc/resolv.conf:/tmp/resolv.conf \
mgood/resolvableThe `docker.sock` is mounted to allow `resolvable` to listen for Docker events and automatically register containers.
`resolvable` can insert itself into the host's `/etc/resolv.conf` file by mounting this file to `/tmp/resolv.conf` in the container. When starting, it will insert itself as the first `nameserver` in the file, and remove itself when shutting down.
## Systemd integration
On systems using systemd, `resolvable` can integrate with the systemd DNS configuration. Instead of mounting `/etc/resolv.conf`, mount the systemd configuration path `/run/systemd` and the DBUS socket as follows:
docker run -d \
--hostname resolvable \
-v /var/run/docker.sock:/tmp/docker.sock \
-v /run/systemd:/tmp/systemd \
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \
mgood/resolvable`resolvable` will generate a systemd network config, and then use the DBUS socket to reload `systemd-networkd` to regenerate the host's `/etc/resolv.conf`.
## Container Registration
`resolvable` provides DNS entries `` and `.docker` for each container. Containers are automatically registered when they start, and removed when they die.
For example, the following container would be available via DNS as `myhost` and `myname.docker`:
docker run -d \
--hostname myhost \
--name myname \
mycontainer## DNS Forwarding
`resolvable` also supports forwarding DNS queries to other containers providing DNS servers. This integrates well with tools like Consul or SkyDNS that offer a DNS endpoint for service discovery.
Containers configured with the `DNS_RESOLVES` environment variable are registered in `resolvable` to forward DNS queries for any domains listed.
To run an example `consul` container, supporting DNS queries for the `.consul` domain on port `8600`:
docker run -d \
-e DNS_RESOLVES=consul \
-e DNS_PORT=8600 \
-p 8600/udp \
consul`DNS_RESOLVES` must contain least one domain to forward to this container. Multiple values can be provided as a comma-separated list.
`DNS_PORT` is optional, and defaults to `53`.
## Interface Addresses
`resolvable` also provides a DNS entry for the Docker bridge interface address, usually `docker0`. This can be used to communicate with services with a known port bound to the Docker bridge.
See this article on [Docker network configuration](https://docs.docker.com/articles/networking/) for additional details on the Docker bridge interface.