
!Let's Encrypt Logo
基于letsencrypt基础镜像构建的Let's Encrypt证书自动获取与续期工具,通过webroot验证方式管理SSL证书。
本镜像提供了一种简单高效的方式,通过Let's Encrypt自动获取和续期SSL证书,采用webroot验证方式(即通过Web服务器的特定目录进行域名所有权验证)。适用于需要为Web服务(如Nginx、Apache等)配置HTTPS且希望自动管理证书生命周期的场景,避免手动操作证书续期的繁琐流程。
首先需配置Web服务器,确保其能正确响应/.well-known/acme-challenge路径的请求。以Nginx为例,添加如下配置:
nginxlocation '/.well-known/acme-challenge' { default_type "text/plain"; # 设置默认MIME类型为纯文本 root /tmp/letsencrypt; # 指定验证文件存放目录(需与后续挂载路径一致) }
运行Web服务器容器时,需挂载两个卷以与letsencrypt-webroot容器共享:
bash-v /data/letsencrypt:/etc/letsencrypt # 存储证书的持久化目录 -v /data/letsencrypt-www:/tmp/letsencrypt # webroot验证目录(需与Web服务器配置的root一致)
执行以下命令启动证书管理容器,替换示例中的域名和***:
bashdocker run \ --name some-letsencrypt \ -v /data/letsencrypt:/etc/letsencrypt \ # 挂载证书存储目录 -v /data/letsencrypt-www:/tmp/letsencrypt \ # 挂载webroot验证目录 -e 'DOMAINS=example.com www.example.com' \ # 需申请证书的域名(空格分隔多个域名) -e 'EMAIL=your@email.tld' \ # 用于紧急通知和密钥恢复的邮箱 -e 'WEBROOT_PATH=/tmp/letsencrypt' \ # webroot验证目录路径(需与Web服务器配置一致) kvaps/letsencrypt-webroot
证书生成后,应用可通过以下路径访问证书文件:
/etc/letsencrypt/live/example.com/privkey.pem/etc/letsencrypt/live/example.com/cert.pem/etc/letsencrypt/live/example.com/chain.pem/etc/letsencrypt/live/example.com/fullchain.pem注意:必须完整挂载
/etc/letsencrypt目录,不可仅挂载/etc/letsencrypt/live子目录,否则该目录下证书文件的符号链接将无法正常工作!
可配置证书续期后的触发动作(如重载服务配置),实现依赖服务的自动更新。
挂载Docker Socket:需将主机的Docker Socket挂载到容器,以允许操作其他容器:
bash-v /var/run/docker.sock:/var/run/docker.sock
链接目标容器:通过--link参数链接需要操作的服务容器(如Nginx):
bash--link some-nginx # "some-nginx"为目标容器名称
设置续期钩子环境变量:通过LE_RENEW_HOOK环境变量定义触发动作,支持以下示例:
bash-e 'LE_RENEW_HOOK=docker kill -s HUP @CONTAINER_NAME@'
bash-e 'LE_RENEW_HOOK=docker restart @CONTAINER_NAME@'
注:
@CONTAINER_NAME@会自动替换为通过--link指定的容器名称。
以下是结合Nginx和letsencrypt-webroot的完整Docker Compose配置示例:
docker-compose.yml
yamlnginx: restart: always # 容器退出时自动重启 image: nginx # 使用官方Nginx镜像 hostname: example.com # 主机名(需替换为实际域名) volumes: - /etc/localtime:/etc/localtime:ro # 同步主机时间 - ./nginx:/etc/nginx:ro # 挂载本地Nginx配置(只读) - ./letsencrypt/conf:/etc/letsencrypt # 共享证书目录 - ./letsencrypt/html:/tmp/letsencrypt # 共享webroot验证目录 ports: - 80:80 # HTTP端口(用于证书验证) - 443:443 # HTTPS端口 environment: - LE_RENEW_HOOK=docker kill -s HUP @CONTAINER_NAME@ # Nginx重载钩子(示例) letsencrypt: restart: always # 容器退出时自动重启 image: kvaps/letsencrypt-webroot # 当前letsencrypt镜像 volumes: - /etc/localtime:/etc/localtime:ro # 同步主机时间 - /var/run/docker.sock:/var/run/docker.sock # 挂载Docker Socket以操作其他容器 - ./letsencrypt/conf:/etc/letsencrypt # 证书存储目录(与Nginx共享) - ./letsencrypt/html:/tmp/letsencrypt # webroot验证目录(与Nginx共享) links: - nginx # 链接Nginx容器,用于续期钩子 environment: - DOMAINS=example.com www.example.com # 需申请证书的域名(空格分隔,替换为实际域名) - EMAIL=your@email.tld # 联系邮箱(替换为实际邮箱) - WEBROOT_PATH=/tmp/letsencrypt # webroot验证目录(需与Nginx配置一致) - EXP_LIMIT=30 # 证书到期前30天开始尝试续期(默认值) - CHECK_FREQ=30 # 每30天检查一次证书状态(默认值)
支持单次运行模式,即执行一次证书更新后立即退出容器,适用于通过外部定时任务(如Cron)触发的场景。只需在docker run命令末尾添加once参数:
bashdocker run \ --name some-letsencrypt \ -v /data/letsencrypt:/etc/letsencrypt \ -v /data/letsencrypt-www:/tmp/letsencrypt \ -e 'DOMAINS=example.com www.example.com' \ -e 'EMAIL=your@email.tld' \ -e 'WEBROOT_PATH=/tmp/letsencrypt' \ kvaps/letsencrypt-webroot \ once # 单次运行模式
| 环境变量 | 说明 | 示例值 | 默认值 |
|---|---|---|---|
DOMAINS | 需申请证书的域名列表(空格分隔多个域名) | example.com www.example.com | 无(必填) |
EMAIL | 联系***,用于接收证书到期通知及密钥恢复 | your@email.tld | 无(必填) |
WEBROOT_PATH | webroot验证目录路径(需与Web服务器配置的root一致) | /tmp/letsencrypt | /tmp/letsencrypt |
CHOWN | 证书文件的所有者(用户:组) | www-data:www-data | root:root |
CHMOD | 证书文件的权限(八进制格式) | 600 | 644 |
EXP_LIMIT | 证书到期前多少天开始尝试续期(整数) | 30 | 30 |
CHECK_FREQ | 证书续期检查频率(天数,整数) | 30 | 30 |
LE_RENEW_HOOK | 证书续期后的触发动作(需配合Docker Socket和--link使用) | docker restart @CONTAINER_NAME@ | 无 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务