andyshinn/dnsmasqイメージを利用させてもらいます。Dockerfileも以下の通り、たった4行なのでとてもシンプルです

1
2
3
4
FROM alpine:edge
RUN apk --no-cache add dnsmasq
EXPOSE 53 53/udp
ENTRYPOINT ["dnsmasq", "-k"]

DNSサーバ側: docker-compose.yml

extra_hostsにドメインとIPを列挙します

1
2
3
4
5
6
7
8
9
10
11
dnsmasq:
image: andyshinn/dnsmasq
container_name: dnsmasq
ports:
- "53:53/udp"
- "53:53/tcp"
extra_hosts:
- "hoge.local:192.168.2.100"
- "admin.hoge.local:192.168.2.100"
cap_add:
- NET_ADMIN

あとはupするだけです

1
$ docker-compose up -d

クライアント側: DNSの設定をする

クライアントはWindowsだったりMacだったりするので割愛しますが、例えばWindowsだとこんな感じに、DNSサーバを設定に記述して下さい

/img/dnsmasq.jpg

クライアント側: 確認

IPが引けるか確認します

1
2
3
4
5
6
$ nslookup hoge.local
Server: 10.0.2.3
Address: 10.0.2.3#53

Name: hoge.local
Address: 192.168.2.100