macOSでやった。Docker (docker-compose) を使う。
この前作ったコレを使うと何も考えずにできる。
使い方。
当該リポジトリをcloneしてくる
$ git clone https://github.com/S64/dockerfile-dns.git
$ cd dockerfile-dns
同梱のdocker-compose.example.yml
を元に、docker-compose.yml
をつくる。
$ cp docker-compose.example.yml docker-compose.yml # .gitignoreで無視してるので安心して
以下のようにして立ち上げられる。
$ ./up_daemon.sh
または、これでそのまま立ち上げられる。
$ docker-compose up # --force-recreate --build -d # docker-machineを使ってる場合は `docker-compose $(docker-machine config yourmachinename) up`
以下で停止できる。
$ ./down_daemon.sh
または、これでそのまま停止できる。
$ docker-compose down # --rmi local # docker-machineを使ってる場合は `docker-compose $(docker-machine config yourmachinename) down`
解決したいドメインの追加はdocker-compose.yml
を編集すればできる。/services/dns/extra_hosts/*
の位置にFQDNを書く。たとえば以下のように。
... - 8.8.4.4 extra_hosts: - "example.dev:93.184.216.34" - "yourawesomedomain.local:192.168.0.1" cap_add: ...
上流のDNSサーバは/services/dns/dns/*
で追加できる。
... restart: always dns: - 8.8.8.8 - 8.8.4.4 - 192.168.0.1 ... extra_hosts:
標準ではdockerデーモンと同時に自動起動するので、手動で立ち上げるようにしたければ/services/dns/restart
を"no"
変える。
... - "53:53/tcp" restart: "no" dns: ...
疎通 / 解決チェック。ローカルマシンで見る場合は
$ nslookup example.dev 127.0.0.1
# docker-machineなら nslookup example.dev $(docker-machine ip yourmachinename)
LAN内の他マシンから見る場合は、まずこちらの記事を参考に自分のIPアドレスを取る。
いちおうこんな感じ。
# on macOS $ ipconfig getifaddr en0 # 使ってるネットワークif
んで、他のマシンからnslookup
する。
$ nslookup example.dev 192.168.0.xxx # さっき取ったIPへ試す
DNSサーバは53番ポートを使うので、もし上手く行かない場合はこちらをチェック。