本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Dockerized Cron 是一个轻量级 Docker 镜像,旨在将 Unix/Linux 系统中的 cron 守护进程容器化,提供在隔离环境中执行定时任务的能力。该镜像基于 Alpine Linux 构建,保持极小体积的同时,完整支持 cron 任务调度功能,适用于需要在容器环境中运行周期性任务的场景。
docker logs 查看# 1. 创建本地 crontab 文件(示例:每分钟输出当前时间到日志) echo "* * * * * echo 'Current time: \$(date)' >> /var/log/cron.log 2>&1" > ./my-crontab # 2. 运行容器,挂载 crontab 文件至容器内默认路径 docker run -d \ --name docker-cron \ -v $(pwd)/my-crontab:/etc/crontabs/root \ # 挂载自定义 crontab(root 用户任务) -v $(pwd)/cron-logs:/var/log \ # 挂载日志目录(可选,持久化日志) -e TZ=Asia/Shanghai \ # 设置时区(默认 UTC) dockerized-cron:latest
root 用户执行任务,crontab 文件需挂载至 /etc/crontabs/root(Alpine crond 标准路径)>> /path/to/log 2>&1 重定向至文件,或直接输出到 stdout(通过 docker logs 查看)容器内 crontab 文件语法与标准 cron 一致,格式如下:
# 分钟 小时 日 月 星期 命令/脚本(支持绝对路径) # 取值范围: # 分钟 (0-59), 小时 (0-23), 日 (1-31), 月 (1-12), 星期 (0-6, 0=周日) # 特殊符号:*(任意值)、/(间隔)、,(枚举)、-(范围) # 示例任务: */5 * * * * /usr/local/bin/backup.sh # 每 5 分钟执行备份脚本 0 3 * * * /usr/local/bin/clean-logs.sh # 每天凌晨 3 点执行日志清理 0 0 * * 0 /usr/local/bin/weekly-report.sh # 每周日凌晨 0 点生成周报
| 环境变量 | 说明 | 默认值 | 可选值示例 |
|---|---|---|---|
TZ | 容器时区(影响任务执行时间) | UTC | Asia/Shanghai、UTC+8 |
CRON_USER | 执行任务的用户(容器内用户) | root | appuser(需提前创建) |
CRON_LOG_LEVEL | 日志级别 | info | debug、warn、error |
# 实时查看容器日志(包含 cron 守护进程日志与任务输出) docker logs -f docker-cron
# 将容器内 /var/log 挂载至本地目录,持久化任务日志 docker run -d \ --name docker-cron \ -v $(pwd)/my-crontab:/etc/crontabs/root \ -v $(pwd)/cron-logs:/var/log \ # 本地目录 cron-logs 会保存任务日志 dockerized-cron:latest
version: '3.8' services: cron: image: dockerized-cron:latest container_name: app-cron restart: unless-stopped # 任务持久化,容器退出后自动重启 environment: - TZ=Asia/Shanghai # 设置时区为上海 - CRON_USER=appuser # 非 root 用户执行任务(需确保容器内存在该用户) volumes: - ./crontabs:/etc/crontabs # 挂载整个 crontabs 目录(支持多用户任务) - ./scripts:/usr/local/scripts # 挂载任务依赖的脚本(如备份脚本) - ./cron-logs:/var/log # 持久化日志 # 可选:限制资源占用 deploy: resources: limits: cpus: '0.1' memory: 64M
| 路径 | 说明 | 挂载建议 |
|---|---|---|
/etc/crontabs/root | 默认 crontab 文件(root 用户任务) | 挂载本地文件至该路径 |
/etc/crontabs | 多用户 crontab 目录(用户任务文件) | 挂载目录,按用户名存放任务文件 |
/etc/cron.d | 系统级任务目录(支持任意文件名) | 挂载目录,存放系统级任务配置 |
若任务依赖外部脚本或工具,需通过卷挂载或镜像构建阶段集成:
# 示例:挂载本地脚本目录至容器,任务中调用脚本 docker run -d \ -v $(pwd)/my-crontab:/etc/crontabs/root \ -v $(pwd)/my-scripts:/usr/local/scripts \ # 本地脚本目录挂载至容器 dockerized-cron:latest
此时 crontab 文件可直接调用脚本:
# 每小时执行挂载的备份脚本 0 * * * * /usr/local/scripts/backup-data.sh >> /var/log/backup.log 2>&1
容器默认时区为 UTC,若任务需按本地时区执行,需通过以下方式配置:
TZ 配置(推荐)docker run -e TZ=Asia/Shanghai dockerized-cron:latest
docker run -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro dockerized-cron:latest
权限问题:
600)任务输出处理:
vim)>> /var/log/task.log 2>&1),否则可能丢失日志容器生命周期:
--restart=always 或 docker-compose restart 策略确保任务持续执行资源限制:
--cpus、--memory 限制容器资源,避免影响其他服务A:1. 检查 crontab 文件语法(可通过 crontab -l 在容器内验证);2. 查看容器日志(docker logs)确认 cron 守护进程是否正常启动;3. 确认任务命令在容器内可执行(如依赖工具是否存在)。
A:需在 crontab 文件中显式定义环境变量,或通过 source /etc/environment 加载容器环境变量,例如:
# 在 crontab 文件中定义环境变量 DB_HOST=db.example.com DB_PORT=3306 * * * * * /usr/local/scripts/query-db.sh $DB_HOST $DB_PORT >> /var/log/db.log 2>&1
A:修改本地挂载的 crontab 文件后,无需重启容器,cron 守护进程会自动检测文件变更(通常 1-2 分钟内生效);若未自动生效,可通过 docker exec docker-cron crontab /etc/crontabs/root 手动重载。
免费版仅支持 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