
镜像名称:certbot/dns-cloudflare(基于Certbot官方镜像构建)
官方维护:Electronic Frontier Foundation (EFF)
核心用途:该镜像为Certbot的官方Docker镜像,集成了Cloudflare DNS插件,用于通过DNS-01挑战(DNS-01 challenge)自动获取、续期SSL/TLS证书。适用于使用Cloudflare DNS服务的域名,无需暴露服务器80/443端口即可完成域名验证。
*.example.com等通配符域名申请证书(ACME协议要求通配符证书必须通过DNS-01验证)。a.example.com、b.example.com)申请证书。Zone:Read(读取域名区域信息)DNS:Edit(修改DNS记录,用于添加/删除TXT记录)4.2.1 环境变量(Cloudflare插件专用)
| 环境变量名 | 说明 | 是否必填 |
|---|---|---|
CF_DNS_API_TOKEN | Cloudflare API令牌(推荐),需包含DNS:Edit和Zone:Read权限 | 是 |
CF_ZONE_API_TOKEN | (可选)仅用于指定区域的令牌,优先级高于CF_DNS_API_TOKEN | 否 |
CF_API_EMAIL | Cloudflare账户***(传统API密钥模式使用,与CF_API_KEY配合) | 否 |
CF_API_KEY | Cloudflare全局API密钥(传统模式,不推荐,优先使用API令牌) | 否 |
CERTBOT_EMAIL | 用于接收证书过期通知的***地址 | 是 |
4.2.2 Certbot通用参数
| 参数 | 说明 |
|---|---|
certonly | 仅申请证书(不自动安装到服务器) |
--dns-cloudflare | 指定使用Cloudflare DNS插件 |
--dns-cloudflare-credentials | (可选)指定包含Cloudflare凭据的配置文件路径(替代环境变量) |
--non-interactive | 非交互式模式(适合自动化脚本) |
--agree-tos | 同意ACME服务条款 |
--email | 指定管理员***(同CERTBOT_EMAIL环境变量,命令行参数优先级更高) |
-d | 指定目标域名(支持多个,如-d example.com -d *.example.com) |
4.3.1 使用docker run获取证书
首次申请证书(通配符域名示例)
bashdocker run --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ # 挂载证书存储目录(持久化证书) -v /var/lib/letsencrypt:/var/lib/letsencrypt \ # 挂载Certbot工作目录 -e "CF_DNS_API_TOKEN=your_cloudflare_api_token" \ # Cloudflare API令牌 -e "CERTBOT_EMAIL=admin@example.com" \ # 管理员邮箱 certbot/dns-cloudflare \ certonly \ --dns-cloudflare \ --non-interactive \ --agree-tos \ -d example.com \ -d *.example.com
证书续期(自动续期)
Certbot默认会检查证书有效期(剩余30天内自动续期),可通过以下命令手动触发续期:
bashdocker run --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ -e "CF_DNS_API_TOKEN=your_cloudflare_api_token" \ certbot/dns-cloudflare \ renew \ --non-interactive
4.3.2 Docker Compose配置示例
创建docker-compose.yml文件:
yamlversion: '3.8' services: certbot: image: certbot/dns-cloudflare volumes: - ./letsencrypt:/etc/letsencrypt # 本地目录挂载,持久化证书 - ./letsencrypt-lib:/var/lib/letsencrypt # 工作目录 environment: - CF_DNS_API_TOKEN=your_cloudflare_api_token # 替换为实际API令牌 - CERTBOT_EMAIL=admin@example.com # 替换为实际邮箱 command: > certonly --dns-cloudflare --non-interactive --agree-tos -d example.com -d *.example.com
启动容器申请证书:
bashdocker-compose up
4.4.1 证书存储路径
容器内证书默认存储于/etc/letsencrypt,通过卷挂载到宿主机后,可在宿主机路径(如/etc/letsencrypt)中查看:
/etc/letsencrypt/live/example.com/fullchain.pem/etc/letsencrypt/live/example.com/privkey.pem4.4.2 自动续期配置
Certbot证书默认有效期为90天,建议通过定时任务(如crontab)自动续期:
/opt/certbot/renew.sh:bash#!/bin/bash docker run --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ -e "CF_DNS_API_TOKEN=your_cloudflare_api_token" \ certbot/dns-cloudflare renew --non-interactive
bashchmod +x /opt/certbot/renew.sh
bashecho "0 3 * * * /opt/certbot/renew.sh >> /var/log/certbot-renew.log 2>&1" | crontab -
Zone:Read和DNS:Edit权限,避免因权限不足导致验证失败。/etc/letsencrypt目录需持久化存储(通过Docker卷挂载),防止容器删除后证书丢失。docker logs <容器ID>查看证书申请/续期过程中的详细日志,用于排查错误。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务