readme
This commit is contained in:
parent
3db6797e53
commit
fde16aa54b
1 changed files with 104 additions and 0 deletions
104
README.md
Normal file
104
README.md
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
# docker-hosts-provider
|
||||||
|
|
||||||
|
Make your docker containers accesible over local DNS.
|
||||||
|
|
||||||
|
## What does it do?
|
||||||
|
|
||||||
|
This service iterates over docker containers that have a macvlan network and container_name assigned to them, and exposes hosts-file that can be used with [CoreDNS](https://github.com/coredns/coredns).
|
||||||
|
|
||||||
|
## Prerquisites
|
||||||
|
|
||||||
|
Create a Docker macvlan network
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# this is just an example, adapt to your needs
|
||||||
|
$ docker network create -d macvlan --subnet=10.1.30.0/24 --gateway=10.1.30.1 -o parent=eth0.30 vlan.30
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### docker-compose.yaml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
docker-dns-monitor:
|
||||||
|
container_name: docker-dns-monitor
|
||||||
|
image: ghcr.io/ad-on-is/docker-hosts-provider
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- DOMAIN=home.arpa # use your prefered local DNS (homelab.lan, my.home, etc...)
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- /path/to/geneated/hosts:/etc/docker_hosts
|
||||||
|
|
||||||
|
coredns:
|
||||||
|
image: coredns/coredns
|
||||||
|
container_name: coredns
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 53:53
|
||||||
|
- 53:53/udp
|
||||||
|
volumes:
|
||||||
|
- ./Corefile:/Corefile
|
||||||
|
- /path/to/geneated/hosts:/etc/coredns/hosts
|
||||||
|
command: -conf /Corefile
|
||||||
|
|
||||||
|
example-container:
|
||||||
|
image: nginx
|
||||||
|
container_name: web
|
||||||
|
networks:
|
||||||
|
vlan.30:
|
||||||
|
ipv4_address: 10.1.30.20 # (optional)
|
||||||
|
|
||||||
|
networks:
|
||||||
|
vlan.30:
|
||||||
|
external: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### Corefile
|
||||||
|
|
||||||
|
To use with CoreDNS
|
||||||
|
|
||||||
|
```
|
||||||
|
. {
|
||||||
|
log
|
||||||
|
errors
|
||||||
|
debug
|
||||||
|
health
|
||||||
|
ready
|
||||||
|
hosts /etc/coredns/hosts {
|
||||||
|
reload 10s
|
||||||
|
fallthrough
|
||||||
|
}
|
||||||
|
cache 30
|
||||||
|
reload
|
||||||
|
loadbalance
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## DNS/PTR entries
|
||||||
|
|
||||||
|
To make it actually work, you need to tell your DNS-server (router, pihole, etc...) about CoreDNS and the subnet-range to look for the DNS/PTR entries.
|
||||||
|
|
||||||
|
If your LAN spans from 10.1.0.0 to 10.1.255.255, and CoreDNS runs on 10.1.0.2, this is what you'd do
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# this is just an example, adapt to your needs
|
||||||
|
server=/1.10.in-addr.arpa/10.1.0.2
|
||||||
|
```
|
||||||
|
|
||||||
|
## Verify it works
|
||||||
|
|
||||||
|
Execute the following commands on a machine that is within your network.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ping web.home.arpa
|
||||||
|
# PING web.home.arpa (10.1.30.20) 56(84) bytes of data.
|
||||||
|
# 64 bytes from web.home.arpa (10.1.30.20): icmp_seq=1 ttl=64 time=0.182 ms
|
||||||
|
|
||||||
|
$ dig -x 10.1.30.20
|
||||||
|
# ...
|
||||||
|
# ;; ANSWER SECTION:
|
||||||
|
# 20.30.1.10.in-addr.arpa. 3600 IN PTR web.home.arpa.
|
||||||
|
# ...
|
||||||
|
|
||||||
|
```
|
Loading…
Reference in a new issue