本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

本仓库包含以下Docker镜像:pdns-mysql、pdns-pgsql、pdns-recursor和pdns-admin。pdns-mysql镜像包含可完全配置的PowerDNS 4.x服务器,带有MySQL后端(不含MySQL服务器)。pdns-pgsql镜像包含可完全配置的PowerDNS 4.x服务器,带有PostgreSQL后端(不含PostgreSQL服务器)。pdns-recursor镜像包含可完全配置的PowerDNS 4.x递归器。pdns-admin镜像包含PowerDNS Admin Web应用的前端(Caddy)和后端(uWSGI),该应用基于Flask编写,用于管理PowerDNS服务器。
pdns-mysql、pdns-pgsql和pdns-recursor镜像还提供alpine标签(感谢@PoppyPop)。
所有镜像均可在Docker Hub获取:
源码GitHub仓库:[***]
!Docker镜像大小(latest标签) !Docker镜像大小(alpine标签) !Docker拉取量
[***]
带有MySQL后端的PowerDNS 4.x服务器Docker镜像,需外部MySQL服务器。MySQL配置环境变量:
(名称=默认值) PDNS_gmysql_host=mysql PDNS_gmysql_port=3306 PDNS_gmysql_user=root PDNS_gmysql_password=powerdns PDNS_gmysql_dbname=powerdns
若使用别名mysql链接官方MariaDB镜像,可自动配置连接,无需指定上述任何变量。若数据库表缺失,将自动初始化数据库。
PowerDNS服务器可通过环境变量配置。所有以PDNS_开头的变量将按以下方式插入/etc/pdns/pdns.conf配置文件:去除前缀PDNS_,并将所有_替换为-。例如,上述MySQL配置中的PDNS_gmysql_host=mysql将在/etc/pdns/pdns.conf中变为gmysql-host=mysql。通过这种方式,可在docker run命令中按需配置PowerDNS服务器。
同时支持SUPERMASTER_IPS环境变量,用于配置从DNS服务器的超级主服务器。文档。支持空格分隔的多个IP地址。
所有可用设置可参考此处。
启用API并配置一个从服务器的主服务器示例:
docker run -d -p 53:53 -p 53:53/udp --name pdns-master \ --hostname ns1.example.com --link mariadb:mysql \ -e PDNS_master=yes \ -e PDNS_api=yes \ -e PDNS_api_key=secret \ -e PDNS_webserver=yes \ -e PDNS_webserver_address=0.0.0.0 \ -e PDNS_webserver_password=secret2 \ -e PDNS_version_string=anonymous \ -e PDNS_default_ttl=1500 \ -e PDNS_allow_axfr_ips=172.5.0.21 \ -e PDNS_only_notify=172.5.0.21 \ pschiffe/pdns-mysql
带有超级主服务器的从服务器示例:
docker run -d -p 53:53 -p 53:53/udp --name pdns-slave \ --hostname ns2.example.com --link mariadb:mysql \ -e PDNS_gmysql_dbname=powerdnsslave \ -e PDNS_slave=yes \ -e PDNS_version_string=anonymous \ -e PDNS_disable_axfr=yes \ -e PDNS_allow_notify_from=172.5.0.20 \ -e SUPERMASTER_IPS=172.5.0.20 \ pschiffe/pdns-mysql
!Docker镜像大小(latest标签) !Docker镜像大小(alpine标签) !Docker拉取量
[***]
带有PostgreSQL后端的PowerDNS 4.x服务器Docker镜像,需外部PostgreSQL服务器。PostgreSQL配置环境变量:
(名称=默认值) PDNS_gpgsql_host=pgsql PDNS_gpgsql_port=5432 PDNS_gpgsql_user=postgres PDNS_gpgsql_password=powerdns PDNS_gpgsql_dbname=powerdns
若使用别名pgsql链接官方postgres镜像,可自动配置连接,无需指定上述任何变量。若数据库表缺失,将自动初始化数据库。
PowerDNS服务器可通过环境变量配置。所有以PDNS_开头的变量将按以下方式插入/etc/pdns/pdns.conf配置文件:去除前缀PDNS_,并将所有_替换为-。例如,上述PostgreSQL配置中的PDNS_gpgsql_host=pgsql将在/etc/pdns/pdns.conf中变为gpgsql-host=pgsql。通过这种方式,可在docker run命令中按需配置PowerDNS服务器。
同时支持SUPERMASTER_IPS环境变量,用于配置从DNS服务器的超级主服务器。文档。支持空格分隔的多个IP地址。
所有可用设置可参考此处。
启用API并配置一个从服务器的主服务器示例:
docker run -d -p 53:53 -p 53:53/udp --name pdns-master \ --hostname ns1.example.com --link postgres:pgsql \ -e PDNS_master=yes \ -e PDNS_api=yes \ -e PDNS_api_key=secret \ -e PDNS_webserver=yes \ -e PDNS_webserver_address=0.0.0.0 \ -e PDNS_webserver_password=secret2 \ -e PDNS_version_string=anonymous \ -e PDNS_default_ttl=1500 \ -e PDNS_allow_axfr_ips=172.5.0.21 \ -e PDNS_only_notify=172.5.0.21 \ pschiffe/pdns-pgsql
带有超级主服务器的从服务器示例:
docker run -d -p 53:53 -p 53:53/udp --name pdns-slave \ --hostname ns2.example.com --link postgres:pgsql \ -e PDNS_gpgsql_dbname=powerdnsslave \ -e PDNS_slave=yes \ -e PDNS_version_string=anonymous \ -e PDNS_disable_axfr=yes \ -e PDNS_allow_notify_from=172.5.0.20 \ -e SUPERMASTER_IPS=172.5.0.20 \ pschiffe/pdns-pgsql
!Docker镜像大小(latest标签) !Docker镜像大小(alpine标签) !Docker拉取量
[***]
带有PowerDNS 4.x递归器的Docker镜像。
PowerDNS递归器可通过环境变量配置。所有以PDNS_开头的变量将按以下方式插入/etc/pdns/recursor.conf配置文件:去除前缀PDNS_,并将所有_替换为-。例如,PDNS_gmysql_host=mysql将在/etc/pdns/recursor.conf中变为gmysql-host=mysql。通过这种方式,可在docker run命令中按需配置PowerDNS递归器。
所有可用设置可参考此处。
启用API的递归器服务器示例:
docker run -d -p 53:53 -p 53:53/udp --name pdns-recursor \ -e PDNS_api_key=secret \ -e PDNS_webserver=yes \ -e PDNS_webserver_address=0.0.0.0 \ -e PDNS_webserver_password=secret2 \ pschiffe/pdns-recursor
!Docker镜像大小(latest标签) !Docker拉取量
[***]
带有PowerDNS Admin Web应用的Docker镜像,该应用基于Flask编写,用于管理PowerDNS服务器。需外部MySQL或PostgreSQL服务器。
Docker Hub上还有官方的pdns-admin镜像powerdnsadmin/pda-legacy,该镜像仅包含处理静态文件和Python应用的gunicorn进程。本仓库的镜像包含处理Python应用请求的uWSGI服务器和处理静态文件及可选Let's Encrypt HTTPS的Caddy Web服务器。
MySQL配置环境变量:
(名称=默认值) PDNS_ADMIN_SQLA_DB_HOST=mysql PDNS_ADMIN_SQLA_DB_PORT=3306 PDNS_ADMIN_SQLA_DB_USER=root PDNS_ADMIN_SQLA_DB_PASSWORD=powerdnsadmin PDNS_ADMIN_SQLA_DB_NAME=powerdnsadmin
若使用别名mysql链接官方MariaDB镜像,可自动配置连接,无需指定上述任何变量。
PostgreSQL配置环境变量:
PDNS_ADMIN_SQLA_DB_TYPE=postgres PDNS_ADMIN_SQLA_DB_HOST=pgsql PDNS_ADMIN_SQLA_DB_PORT=5432 PDNS_ADMIN_SQLA_DB_USER=postgres PDNS_ADMIN_SQLA_DB_PASSWORD=powerdnsadmin PDNS_ADMIN_SQLA_DB_NAME=powerdnsadmin
若数据库表缺失,将自动初始化数据库。
与pdns-mysql类似,pdns-admin也可通过环境变量完全配置。此处前缀为PDNS_ADMIN_,配置将写入/opt/powerdns-admin/powerdnsadmin/default_config.py文件。
pdns-admin需管理PowerDNS服务器才能发挥作用。PowerDNS服务器需暴露API(PowerDNS 4.x示例配置):
api=yes api-key=secret webserver=yes webserver-address=0.0.0.0 webserver-allow-from=172.5.0.0/16
PowerDNS连接通过环境变量配置(需PowerDNS服务器URL、API密钥和服务器版本,例如4.0):
(名称=默认值) PDNS_API_URL="[***]" PDNS_API_KEY="" PDNS_VERSION=""
若此容器使用别名pdns链接本仓库的pdns-mysql镜像,将自动配置,无需指定上述任何环境变量。
为生成API密钥,需通过PDNS_ADMIN_SALT环境变量指定SALT。这是一个机密值,可通过以下命令生成:
python3 -c 'import bcrypt; print(bcrypt.gensalt().decode("utf-8"));'
示例值类似$2b$12$xxxxxxxxxxxxxxxxxxxxxx——注意使用docker-compose时,文字$需指定为$$。
内置Caddy服务器可选择通过Let's Encrypt证书处理HTTPS。需添加SSL_MAIN_DOMAIN环境变量指定HTTPS的主域名。SSL_EXTRA_DOMAINS环境变量可包含逗号分隔的域名列表,这些域名将重定向到SSL_MAIN_DOMAIN。需正确配置公共DNS,并将pdns-admin的端口8080、8443和8443/udp映射为80、443和443/udp(443/udp用于HTTP/3流量)。
最后,需持久化pdns-admin容器内的/var/lib/caddy目录——生成的证书存储于此。
用户上传目录也需持久化:/opt/powerdns-admin/upload
链接本仓库的pdns-mysql时:
docker run -d -p 8080:8080 --name pdns-admin \ --link mariadb:mysql --link pdns-master:pdns \ -v pdns-admin-upload:/opt/powerdns-admin/upload \ pschiffe/pdns-admin
带HTTPS的示例:
docker run -d -p 80:8080 -p 443:8443 -p 443:8443/udp --name pdns-admin \ --link mariadb:mysql --link pdns-master:pdns \ -v pdns-admin-caddy:/var/lib/caddy \ -v pdns-admin-upload:/opt/powerdns-admin/upload \ -e SSL_MAIN_DOMAIN=[***] \ -e SSL_EXTRA_DOMAINS=pdns-admin.com,pdns-admin.eu \ pschiffe/pdns-admin
提供的docker compose文件包含容器使用示例配置:
docker-compose -f docker-compose-mysql.yml up -d
提供的Ansible playbook可用于构建和运行本仓库的容器。运行命令:
ansible-playbook ansible-playbook-mysql.yml
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429