Dockerizeされたskydnsとetcdをどう動かしたかの記録を残す。
但し、digで応答が返ってくるのを確認した程度の状態なので後で追加、修正するかも。
結局二行で動かせたけど、必要なパラメータを把握するのに苦労した。
環境
| ソフトウェア | バージョン |
|---|---|
| boot2docker-cli | v1.3.1 |
| docker | 1.3.0 |
| skydns | 2.0.1d |
| etcd | 0.4.6 |
起動方法
etcd
$ docker run -it --name etcd --rm -p 7001:7001 -p 4001:4001 coreos/etcd:v0.4.6 --addr=$(boot2docker ip 2>/dev/null):4001 --peer-addr=$(boot2docker ip 2>/dev/null):7001
skydns
$ docker run -it -p 53:53 -p 53:53/udp --name skydns --link etcd:etcd --rm -e ETCD_MACHINES=http://etcd:4001 skynetservices/skydns:latest --addr=0.0.0.0:53
registrator
registratorは以下の感じで動かせた。
$ docker run --name registrator -h registrator -v /var/run/docker.sock:/tmp/docker.sock progrium/registrator skydns2://$(boot2docker ip 2>/dev/null):4001/skydns.local
動作確認
ダミーの情報をetcdに登録
skydnsのREADMEに書いてある例を使って、サービスの情報をetcdに登録
$ curl -XPUT http://$(boot2docker ip 2>/dev/null):4001/v2/keys/skydns/local/skydns/east/production/rails/1 -d value='{"host":"service1.example.com","port":8080}'
$ curl -XPUT http://$(boot2docker ip 2>/dev/null):4001/v2/keys/skydns/local/skydns/west/production/rails/2 -d value='{"host":"service2.example.com","port":8080}'
$ curl -XPUT http://$(boot2docker ip 2>/dev/null):4001/v2/keys/skydns/local/skydns/east/staging/rails/4 -d value='{"host":"10.0.1.125","port":8080}'
$ curl -XPUT http://$(boot2docker ip 2>/dev/null):4001/v2/keys/skydns/local/skydns/east/staging/rails/6 -d value='{"host":"2003::8:1","port":8080}'
digで登録情報を確認
$ dig @$(boot2docker ip 2>/dev/null) rails.staging.east.skydns.local
; <<>> DiG 9.8.3-P1 <<>> @192.168.59.103 rails.staging.east.skydns.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26296
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;rails.staging.east.skydns.local. IN A
;; ANSWER SECTION:
rails.staging.east.skydns.local. 3600 IN A 10.0.1.125
;; Query time: 47 msec
;; SERVER: 192.168.59.103#53(192.168.59.103)
;; WHEN: Sat Dec 27 21:29:03 2014
;; MSG SIZE rcvd: 65
参考URL
CoreOS 上の Docker コンテナのサービス情報を registrator を使って SkyDNS2 に自動登録する
skynetservices/skydns - Docker Hub
[skynetservices/skydns - GitHub]
(https://github.com/skynetservices/skydns)