LoginSignup
16
13

More than 5 years have passed since last update.

ConsulをDNSサーバーとして使う

Posted at

試したことメモ.

概要

docker-consul を使ってDNSサーバーとして、他Dockerコンテナから参照したい.

sudoとか省略してます.

手順

docker-consul をPullして

$ docker pull progrium/consul

Runする

$ docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 --name consul progrium/consul -server -bootstrap -ui-dir /ui

IPを取っておく.

$ DNS_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' consul)"

Consulに何か適当なServiceを登録してみる. 以下の内容で entity.json ファイルを用意する.

Consul - /v1/catalog/register から持ってきた.

entity.json
{
  "Datacenter": "dc1",
  "Node": "foobar",
  "Address": "192.168.10.10",
  "Service": {
    "ID": "redis1",
    "Service": "redis",
    "Tags": [
      "master",
      "v1"
    ],
    "Port": 8000
  },
  "Check": {
    "Node": "foobar",
    "CheckID": "service:redis1",
    "Name": "Redis health check",
    "Notes": "Script based health check",
    "Status": "passing",
    "ServiceID": "redis1"
  }
}

HTTP PUT で登録する.

$ curl -v -H "Content-Type: application/json" -X PUT -d @entity.json http://${DNS_IP}:8500/v1/catalog/register

Consul-containerをDNSに指定して、Dockerに入ってみる.

$ docker run -it --name consul_dns_test --dns ${DNS_IP} centos /bin/bash

pingしてみる. ちゃんと redis をHost名として認識しているのが分かる.

$ ping redis
PING redis.service.consul (192.168.10.10) 56(84) bytes of data.
...

参考にしたサイト

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13