shinsenter/debian-s6🌏 具备自动运行和s6-overlay功能的最新Linux Docker基础镜像。
将官方Ubuntu、Debian和Alpine Linux Docker镜像与s6-overlay和自动运行(autorun)机制相结合。此设置简化了跨各种架构构建可移植、生产就绪应用容器的过程。
Docker镜像支持Debian、Ubuntu和Alpine版本。
构建并尝试以下Dockerfile示例:
DockerfileFROM shinsenter/ubuntu-s6:latest # 在此添加你的指令 # 例如: # ADD --chown=$APP_USER:$APP_GROUP ./myproject/ /var/www/html/
DockerfileFROM shinsenter/debian-s6:latest # 在此添加你的指令 # 例如: # ADD --chown=$APP_USER:$APP_GROUP ./myproject/ /var/www/html/
DockerfileFROM shinsenter/alpine-s6:latest # 在此添加你的指令 # 例如: # ADD --chown=$APP_USER:$APP_GROUP ./myproject/ /var/www/html/
默认应用目录为/var/www/html,可通过$APP_PATH环境变量自定义:
shelldocker run -v "$PWD":/app -e APP_PATH=/app shinsenter/debian-s6:latest
此命令将Web应用目录修改为/app。
运行容器时通过设置环境变量覆盖默认用户和组设置。
可用变量:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
APP_USER | 容器内用户名 | www-data |
APP_GROUP | 容器内组名 | www-data |
APP_UID | 用户的数字UID | 容器内默认UID |
APP_GID | 组的数字GID | 容器内默认GID |
例如,以用户myapp(UID为5000)运行容器:
shelldocker run -e APP_USER=myapp -e APP_UID=5000 shinsenter/debian-s6:latest
或在docker-compose.yml中:
yamlservices: web: image: shinsenter/debian-s6:latest environment: APP_USER: "myapp" APP_UID: "5000"
钩子用于自定义运行中容器的行为。
这些镜像支持以下钩子:
| 钩子名称 | 描述 | 使用示例 |
|---|---|---|
onboot | 容器启动或重启时运行 | 发送启动通知 |
first-run | 容器首次启动时运行 | 初始化数据库 |
rebooted | 容器重启时运行 | 检查崩溃日志 |
migration | 运行迁移脚本 | 执行数据库迁移 |
onready | 在migration之后、应用即将就绪时运行 | 预热缓存 |
要使用钩子,在$APP_PATH内创建hooks文件夹,并添加与钩子同名的可执行文件,或在同名子文件夹中添加文件。例如:要在first-run时安装PHP模块,添加脚本hooks/first-run或hooks/first-run/install-modules。
设置DEBUG=1可查看执行的钩子。
放置在/startup/目录中的Shell脚本会在容器启动时按文件名字母顺序自动运行。此功能可在主程序运行前初始化项目,自动执行初始化脚本以节省时间。
通过Dockerfile将名为00-migration的脚本复制到/startup/:
注意:确保脚本具有可执行权限。
DockerfileFROM shinsenter/debian-s6:latest ADD ./autorun/00-migration /startup/00-migration RUN chmod +x /startup/00-migration # 在此添加你的指令 # 例如: # ADD --chown=$APP_USER:$APP_GROUP ./myproject/ /var/www/html/
👉🏻 信息:启动目录已包含名为
99-greeting的脚本,容器启动时会打印欢迎消息。
要禁用autorun脚本,设置环境变量DISABLE_AUTORUN_SCRIPTS=1。
例如,使用docker run:
shelldocker run -e DISABLE_AUTORUN_SCRIPTS=1 shinsenter/debian-s6:latest bash
或在docker-compose.yml中:
yamlservices: web: image: shinsenter/debian-s6:latest environment: DISABLE_AUTORUN_SCRIPTS: "1"
注意:这是辅助功能。如果需要基本
crontab功能之外的高级功能,请考虑构建自己的Docker镜像并安装更适合的调度工具(如supercronic)。
要在容器中启用定时任务,可使用ENABLE_CRONTAB=1启动容器。此设置会激活Crontab服务,从$CRONTAB_DIR(默认/etc/crontab.d)加载配置。
定时任务将以$APP_USER:$APP_GROUP(默认www-data:www-data)用户身份运行,$HOME目录由$CRONTAB_HOME(默认$APP_PATH)设置。
以下是添加定时任务的Dockerfile示例:
DockerfileFROM shinsenter/debian-s6:latest ENV ENABLE_CRONTAB=1 # 通过RUN指令创建定时任务 RUN echo '* * * * * echo "每分钟运行此命令!" | tee /tmp/cron-every-minute.txt' >> /etc/crontab.d/sample1; # 或通过ADD指令复制定时任务 ADD ./sample2 /etc/crontab.d/
定时任务格式如下:
# 任务定义: # .---------------- 分钟 (0 - 59) # | .------------- 小时 (0 - 23) # | | .---------- 日 (1 - 31) # | | | .------- 月 (1 - 12) 或 jan,feb,mar,apr... # | | | | .---- 星期 (0 - 6) (周日=0或7) 或 sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * 要执行的命令
也可在docker-compose.yml中通过$CRONTAB_SETTINGS环境变量设置定时任务,容器启动时会加载这些设置,便于后续修改:
yamlservices: web: image: shinsenter/debian-s6:latest environment: ENABLE_CRONTAB: "1" CRONTAB_SETTINGS: "* * * * * echo '每分钟运行此命令!' | tee /tmp/cron-every-minute.txt"
有关定时任务的环境变量详情,见下文其他系统设置。
设置环境变量DEBUG=1启用“调试模式”以获取更详细的日志,可用于docker run或docker-compose.yml。
shelldocker run -e DEBUG=1 shinsenter/debian-s6:latest bash
yamlservices: web: image: shinsenter/debian-s6:latest environment: DEBUG: "1"
这些Docker镜像包含其他环境变量用于微调容器行为:
| 设置名称 | 默认值 | 描述 | 示例 |
|---|---|---|---|
DEFAULT_LOG_PATH | /proc/1/fd/2 | 日志输出路径,默认发送到容器标准输出 | /var/log/container.txt |
DEBUG 或 DEBUG_MODE | 未设置 | 设置为1时启用详细日志 | 1 |
TZ | UTC | 容器默认时区,详见时区列表 | Asia/Tokyo |
DISABLE_AUTORUN_SCRIPTS | 未设置 | 设置为1时禁用所有autorun脚本 | 1 |
DISABLE_AUTORUN_FIX_OWNER_GROUP | 未设置 | 设置为1时禁用应用目录所有权自动修正 | 1 |
DISABLE_GREETING | 未设置 | 设置为1时抑制启动欢迎消息 | 1 |
ENABLE_SSHD | 未设置 | 设置为1时启用容器内SSH服务器 | 1 |
SSHD_AUTHORIZED_KEYS | 未设置 | 公钥(每行一个),将添加到容器~/.ssh/authorized_keys用于认证 | ssh-rsa XXXX... |
ENABLE_CRONTAB | 未设置 | 设置为1时启用Crontab服务,从$CRONTAB_DIR(默认/etc/crontab.d)加载任务 | 1 |
ENABLE_CRONTAB_DEBUG | 未设置 | 设置为1时添加每分钟运行的调试任务,打印cron可见的环境变量 | 1 |
CRONTAB_DIR | /etc/crontab.d | 定时任务定义目录,任务以$APP_USER用户运行 | /path/for/crontab/schedules |
CRONTAB_HOME | $APP_PATH | 定时任务执行时的$HOME目录 | /path/for/crontab |
CRONTAB_MAILTO | 未设置 | 接收定时任务输出的***地址 | *** |
CRONTAB_PATH | $PATH | 定时任务的可执行文件搜索路径 | /path/for/crontab/bin |
CRONTAB_SETTINGS | 未设置 | 直接在docker-compose.yml中定义定时任务,便于管理容器内计划任务 | 0 0 * * * echo "新的一天!" |
CRONTAB_SHELL | /bin/sh | 定时任务默认shell | /bin/bash |
CRONTAB_TZ | $TZ | 定时任务时区,详见时区列表 | Asia/Tokyo |
SUPERVISOR_PHP_COMMAND | 未设置 | 用自定义PHP命令覆盖容器默认入口点以启动应用 | php -S localhost:80 index.php |
如果觉得这些镜像有用,可通过******,或在GitHub提交issue。
你的支持将帮助维护和改进这些社区镜像。
本项目采用GNU通用公共许可证v3.0授权。
请尊重创建这些镜像的智力成果。如复制或使用本项目的想法,感谢注明出处。
来自越南🇻🇳的爱心奉献。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务