Atomia DNS 容器
Atomia DNS master server 的 Ubuntu 14.04 容器。Atomia DNS 是一套多租戶的 DNS 管理平台,提供 API 與 Web 介面來管理 zone 與記錄。
Dockerfile
FROM ubuntu:14.04
RUN repo="$(wget -q -O - http://public.apt.atomia.com/setup.sh.shtml | sed s/%distcode/`lsb_release -c | awk '{ print $2 }'`/g)"; echo "$repo"
RUN echo "$repo" | sh
RUN apt-get install atomiadns-masterserver
已知問題
這份 Dockerfile 有一個結構性問題:每個 RUN 都是獨立的 shell,所以第一行設定的 repo 變數在第二行已經不存在,echo "$repo" | sh 實際上什麼都不會做,第三行的 apt-get install 因此找不到套件。
要能正常建置,需要把三步合併成同一個 RUN:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y wget lsb-release
RUN repo="$(wget -q -O - http://public.apt.atomia.com/setup.sh.shtml \
| sed s/%distcode/$(lsb_release -c | awk '{ print $2 }')/g)" \
&& echo "$repo" | sh \
&& apt-get update \
&& apt-get install -y atomiadns-masterserver
另外原版少了 apt-get update,也沒有先安裝 wget 與 lsb-release。
建置與執行
docker build -t atomia-dns:latest .
# DNS 需要同時開放 UDP 與 TCP 53
docker run -d \
-p 53:53/udp \
-p 53:53/tcp \
--name atomia atomia-dns:latest
架構說明
Atomia DNS 採 master / slave 分離設計:
- masterserver — 儲存 zone 資料、提供 SOAP API
- nameserver(slave) — 從 master 同步資料,實際回應查詢
- powerdns / bind sync — 把資料推送到實際的 DNS 伺服器
這份容器只包含 masterserver,完整部署還需要 nameserver 節點。
相關資源
← 回到 Linux 系統管理