billghifun/gogdns

By billghifun

Updated 17 days ago

GOGDNS是一款简易的私人DNS服务器

Image
Networking
Monitoring & observability
Web analytics
1

2.8K

billghifun/gogdns repository overview

GOGDNS Logo

GOGDNS

一款简易的私人 DNS 服务器

📚 查看完整文档

⚠️ 部署前须知

注:可能需要手动禁用dnsmasq与systemd-resolved或转发相关端口数据。
GOGDNS 需要绑定宿主机的 53 端口。如果系统提示端口已被占用,请先检查并处理:

# 检查占用 53 端口的进程
sudo lsof -i :53

# 若为 systemd-resolved 占用,可修改 /etc/systemd/resolved.conf
# 将 DNSStubListener 设置为 no,然后重启服务:
sudo systemctl restart systemd-resolved

建议在部署前执行以确保挂载目录存在

sudo mkdir -p /opt/gogdns

Docker Cli

docker run -d \
  --name gogdns \
  --restart unless-stopped \
  --network host \
  --cap-add=NET_BIND_SERVICE \
  --cap-add=NET_ADMIN \
  -e TZ=Asia/Shanghai \
  -e GOGDNS_BASE_PATH=/gogdns/workstation \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /opt/gogdns:/gogdns/workstation \
  billghifun/gogdns:latest

参数详细说明:
-d: 后台运行容器。
--network host: 使用宿主机网络。这对 DNS 服务至关重要,可避免 NAT 转换导致的源 IP 丢失。
--cap-add=NET_BIND_SERVICE: 允许绑定宿主机 53 端口。
--cap-add=NET_ADMIN: 提供必要的网络管理权限。
-v /var/run/docker.sock:/var/run/docker.sock:ro: 允许读取宿主机容器状态,实现自动化解析。
-v /opt/gogdns:/gogdns/workstation: 数据持久化目录,确保重启后配置不丢失。

Docker Compose

创建文件docker-compose.yml

services:
  gogdns:
    image: billghifun/gogdns:latest  # 镜像名称
    container_name: gogdns  # 容器名称
    restart: unless-stopped  # 自动重启
    # 权限优化:精简 Capability
    cap_add:
      - NET_BIND_SERVICE  # 网络管理权限 允许绑定 53 低位端口
      - NET_ADMIN         # 如果不需要在容器内修改宿主机路由表,可以尝试去掉 NET_ADMIN 以增强安全性

    # 网络模式
    network_mode: host    # DNS 服务使用 host 模式性能最高,且避免了 NAT 转换带来的源 IP 丢失

    # 环境变量
    environment:
      - TZ=Asia/Shanghai     # 推荐通过环境变量传递时区,配合 Dockerfile 中的 tzdata
      - GOGDNS_BASE_PATH=/gogdns/workstation    # 环境变量设置基础路径

    # 存储卷优化
    volumes:
      # Docker 守护进程访问
      - /var/run/docker.sock:/var/run/docker.sock:ro  # 建议设为只读 (ro)
      
      # 数据目录映射
      # 注意:宿主机路径建议使用绝对路径/path/gogdns
      # 需要用户自行确认目录/path/gogdns存在
      - /opt/gogdns:/gogdns/workstation

执行部署

docker-compose up -d

Tag summary

Content type

Image

Digest

sha256:69eea970f

Size

11.5 MB

Last updated

17 days ago

docker pull billghifun/gogdns