下面是用 Docker 部署 ddns-go 的完整步骤与常用配置。

1. 拉取 ddns-go 镜像

先拉取 ddns-go 镜像:

docker pull jeessy/ddns-go

2. 创建并运行 Docker 容器

这是核心步骤,需要根据实际需求配置环境变量和端口映射。以下是一个常用的 docker run 命令示例:

docker run -d \
  --name ddns-go \
  --restart always \
  -v /path/to/your/config:/root/ddns-go \  # 建议挂载配置文件,方便修改和持久化
  -p 9876:9876 \  # 映射 Web UI 端口 (默认 9876)
  -e PUID=1000 \   # (可选) 设置用户 ID,避免权限问题 (通常与宿主机用户 ID 相同)
  -e PGID=1000 \   # (可选) 设置用户组 ID,避免权限问题 (通常与宿主机用户组 ID 相同)
  jeessy/ddns-go

命令参数说明

  • -d:在后台运行容器 (detached mode)。
  • --name ddns-go:给容器命名为 “ddns-go”。
  • --restart always:让容器在重启时自动启动。
  • -v /path/to/your/config:/root/ddns-go:非常重要!将宿主机的 /path/to/your/config 目录挂载到容器内的 /root/ddns-go 目录。需要先在宿主机上创建一个目录,例如 mkdir -p /opt/ddns-go/config,然后将 /opt/ddns-go/config 替换为 /path/to/your/config。ddns-go 会自动在这个目录下生成 config.yaml 配置文件。强烈建议配置此挂载点,否则容器重启后配置会丢失。
  • -p 9876:9876:将宿主机的 9876 端口映射到容器内的 9876 端口 (ddns-go 的 Web UI 默认端口)。可以通过 http://your_server_ip:9876 在浏览器中访问 Web UI。
  • -e PUID=1000 和 -e PGID=1000:可选但推荐!设置容器内的用户 ID (PUID) 和用户组 ID (PGID) 与宿主机上的用户 ID 和用户组 ID 相同。这可以避免文件权限问题,尤其是在挂载目录时。可以使用 id 命令在宿主机上查看你的用户 ID 和用户组 ID,将 1000 替换为实际值。
  • jeessy/ddns-go:使用的镜像名称。

3. 配置 ddns-go

  • 访问 Web UI:在浏览器中访问 http://your_server_ip:9876 (将 your_server_ip 替换为你的服务器 IP 地址)。
  • 设置 DNS 服务提供商:选择你的 DNS 服务提供商 (例如阿里云、腾讯云、Cloudflare 等)。
  • 填写 API 密钥/Token 等信息:根据你选择的 DNS 服务提供商,填写相应的 API 密钥、Token 或其他认证信息。这些信息通常可以在你的 DNS 服务提供商的控制台中找到。
  • 添加域名和 IP 地址来源:添加你想要更新的域名,并选择 IP 地址的来源 (例如自动检测、指定 IP 地址等)。
  • 保存配置:保存你的配置。ddns-go 会自动检测 IP 地址变化并更新 DNS 记录。

4. 常用 Docker 命令

  • 查看容器状态:docker ps
  • 查看容器日志:docker logs ddns-go
  • 停止容器:docker stop ddns-go
  • 启动容器:docker start ddns-go
  • 重启容器:docker restart ddns-go
  • 进入容器 (用于调试):docker exec -it ddns-go bash

5. 注意事项

  • 防火墙:确保你的服务器防火墙允许访问 9876 端口。
  • 配置文件:强烈建议使用 -v 挂载配置文件,方便修改和持久化。
  • 权限问题:如果遇到权限问题,可以尝试设置 PUID 和 PGID 环境变量。
  • 日志查看:如果遇到问题,查看容器日志可以帮助找到原因。使用 docker logs ddns-go 命令。
  • 更新镜像:定期更新 ddns-go 镜像以获取最新功能和安全修复。使用 docker pull jeessy/ddns-go 更新镜像,然后重启容器。

小结

整个部署流程包括拉取镜像、创建并运行容器、在 Web UI 中完成配置以及掌握常用容器管理命令。创建容器时需配置端口映射 -p 9876:9876,并挂载配置文件 -v /path/to/your/config:/root/ddns-go;同时建议设置 PUID 和 PGID 环境变量,以避免权限问题。Web UI 配置包括选择 DNS 服务商、填写 API 密钥、添加域名和 IP 地址来源并保存。日常管理可使用 docker ps、docker logs、docker stop、docker start、docker restart、docker exec 等命令。还应注意检查防火墙设置、定期更新镜像,并在遇到问题时查看容器日志。重点是配置文件挂载以及正确设置 PUID 和 PGID,这样可以减少许多后续问题。

— 感谢阅读 —

一起交流

分享你的思考,让讨论更进一步。