為了讓自己在自己的電腦裡面模擬環境時可以更懶惰,所以決定架個 DNS 專門給 Container 用。
實作環境與相關套件
- 作業系統: Ubuntu Server 14.04 LTS 64 bit
- Docker: 1.11.2
- Docker Image: phensley/docker-dns
開始實作
- 先用
phensley/docker-dns
啟動一個 Container -
$ docker run -d --name dns -v /var/run/docker.sock:/docker.sock phensley/docker-dns
- 先看看剛開啟的 docker dns 的 log
-
$ docker logs dns
- 再來就可以啟動任何的 Container 並且指定使用哪個 dns,在這邊以啟動兩個 Redis 為例
-
$ docker run -itd --dns $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dns) --dns-search docker --name redis1 redis
$ docker run -itd --dns $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dns) --dns-search docker --name redis2 redis
- 然後連進去 redis1 裡面
-
$ docker exec -it redis1 /bin/bash
- 並且 ping redis2 看看
- 這樣子就大功告成囉!! 這樣子就不用再去想啟動哪個 Container 然後要去連哪個 Container,不過只限於單機內 XD
- 或者是自定義一個 network 然後在啟動 Container 的時候指定要用自定義的 network 或者將自定義的 network 連接到正在執行的 container 也行。
-
$ docker network create -d bridge my-bridge-network $ docker run -d --net=my-bridge-network --name db training/postgres $ docker run -d --net=my-bridge-network --name web training/webapp
這樣子是不是更方便呢