Docker部署B(yǎng)Iind9 DNS服務器過程
一、環(huán)境準備
安裝 Docker 環(huán)境
- 確保服務器已安裝 Docker 和 Docker Compose(若使用 Compose 方式)。
- 若離線部署,需提前在有網(wǎng)絡的環(huán)境中下載鏡像
sameersbn/bind
及相關依賴包。
創(chuàng)建持久化存儲目錄
mkdir -p /opt/docker/bind # 用于存儲配置文件和區(qū)域數(shù)據(jù)
二、部署 BIND DNS 容器
方案一:直接通過 docker run 命令部署
docker run -d --name dns-server \ --restart=always \ --publish 53:53/tcp \ # 開放 DNS 服務 TCP/UDP 端口 --publish 53:53/udp \ --publish 10000:10000/tcp \ # Webmin 管理界面端口 --volume /opt/docker/bind:/data \ # 掛載配置目錄 --env ROOT_PASSWORD=your_password \ # 設置 Webmin 登錄密碼 --env TZ='Asia/Shanghai' \ # 指定時區(qū) --env WEBMIN_INIT_SSL_ENABLED=false \ # 可選:禁用 SSL(若通過代理管理) sameersbn/bind:9.16.1-20200524
方案二:通過 Docker Compose 部署(推薦)
創(chuàng)建 docker-compose.yml
文件:
version: '3.1' services: dns: image: sameersbn/bind:9.16.1-20200524 container_name: dns-server restart: always environment: TZ: 'Asia/Shanghai' ROOT_PASSWORD: your_password # Webmin 密碼 WEBMIN_ENABLED: 'true' # 啟用 Webmin ports: - "53:53/tcp" - "53:53/udp" - "10000:10000/tcp" volumes: - ./data:/data # 數(shù)據(jù)持久化目錄 networks: - dns-network # 可選:自定義網(wǎng)絡 networks: dns-network: external: true
啟動服務:
docker compose up -d
三、Webmin 管理界面配置
訪問 Webmin
- 瀏覽器訪問
https://<服務器IP>:10000
,使用root
和預設密碼登錄。 - 注意:必須使用 HTTPS,否則會提示 SSL 錯誤。
基礎設置
- 進入
Webmin -> Change Language and Theme
,選擇中文主題(部分菜單可能仍為英文)。 - 確認時區(qū)設置與容器啟動參數(shù)一致。
四、配置 DNS 解析規(guī)則
創(chuàng)建主區(qū)域(正向解析)
- 進入
服務器 -> BIND DNS 服務器
,點擊 創(chuàng)建新的主區(qū)域。 - 填寫域名(如
example.com
),主服務器名稱設為localhost
,郵箱格式為admin.example.com
。
添加 A 記錄
- 在新建的主區(qū)域中,選擇 地址,輸入子域名(如
www
)和對應 IP(如192.168.1.100
)。 - 支持通配符
*
解析所有未定義子域名。
反向解析(可選)
- 創(chuàng)建反向區(qū)域(如
192.168.1.0/24
),添加 PTR 記錄將 IP 映射回域名。
應用配置
- 每次修改后點擊右上角 應用配置 或重啟容器使生效:
docker restart dns-server
五、客戶端測試與使用
配置客戶端 DNS
修改客戶端 DNS 服務器地址為 BIND 容器所在宿主機的 IP。
- Linux:編輯
/etc/resolv.conf
,添加nameserver 192.168.1.200
。 - Windows:在網(wǎng)絡適配器設置中指定 DNS 地址。
解析驗證
nslookup www.example.com 192.168.1.200 # 指定 DNS 服務器查詢 ping www.example.com # 驗證解析結果
緩存刷新(若需)
- Windows:
ipconfig /flushdns
- Linux:
systemctl restart systemd-resolved
。
六、注意事項與優(yōu)化
防火墻與 SELinux
- 開放端口:
53/tcp
、53/udp
、10000/tcp
。 - 若 SELinux 啟用,需調(diào)整策略或臨時禁用。
轉發(fā)外部 DNS(可選)
- 在容器內(nèi)修改
/data/bind/etc/resolv.conf
,添加公共 DNS(如114.114.114.114
)以解析外部域名。 - 修改
/data/bind/etc/named.conf.options
,添加allow-query { any; };
允許所有查詢。
性能與安全
- 避免在容器內(nèi)運行非必要服務(如 Webmin 的監(jiān)控功能),減少資源占用。
- 定期備份
/opt/docker/bind
目錄防止配置丟失。
常見問題:
- 端口沖突:若宿主機 53 端口被占用,可改為
-p 5353:53/udp
,但需客戶端顯式指定端口。 - Webmin 訪問異常:確保使用 HTTPS,瀏覽器忽略證書警告或配置有效證書。
- 解析延遲:檢查 DNS 緩存,或重啟容器強制刷新。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
docker環(huán)境下安裝jenkins容器的詳細教程
這篇文章主要介紹了docker環(huán)境下安裝jenkins容器的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05云原生自動化應用于docker倉庫私有憑據(jù)secret創(chuàng)建
這篇文章主要為大家介紹了云原生自動化應用于docker倉庫私有憑據(jù)secret創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03docker報錯Container is not running問題及解決
這篇文章主要介紹了docker報錯Container is not running問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05CentOS8上用Docker部署開源項目Tcloud的教程
這篇文章主要介紹了CentOS8上用Docker部署開源項目Tcloud,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01Docker的徹底刪除與重新安裝完整步驟(ubuntu22.04)
Docker是一種輕量級的容器化平臺,可以幫助開發(fā)人員將應用程序及其依賴項打包成一個可移植的容器,這篇文章主要介紹了Docker的徹底刪除與重新安裝完整步驟的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2025-03-03