
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
docker-alpine-s6 是一个基于 Alpine Linux 的 Docker 镜像,集成了 s6 overlay 工具集。s6 overlay 是一套轻量级的进程管理解决方案,基于 s6 supervision suite,提供可靠的进程监控、生命周期管理和多进程协调能力。
s6 supervision suite 集成
完整集成 s6-rc、s6-svscan、s6-supervise 等工具,实现进程的启动、监控、重启和优雅终止。
多进程管理
支持同时运行多个独立服务,每个服务通过独立的 supervision 配置进行管理。
进程生命周期控制
轻量级基础
基于 Alpine Linux,镜像体积小,资源占用低,适合生产环境部署。
灵活的日志处理
默认将服务日志转发至 stdout/stderr(符合 Docker 最佳实践),支持通过 s6-log 自定义日志路径和轮转策略。
环境变量配置
通过环境变量快速调整 s6 行为,无需修改底层配置文件。
Dockerfile 示例
dockerfile# 基于 docker-alpine-s6 构建自定义镜像 FROM crazy-max/alpine-s6:latest # 安装应用依赖 RUN apk add --no-cache nginx php81-fpm # 添加服务配置(s6 服务定义) # Nginx 服务 RUN mkdir -p /etc/s6/services/nginx COPY nginx.run /etc/s6/services/nginx/run RUN chmod +x /etc/s6/services/nginx/run # PHP-FPM 服务 RUN mkdir -p /etc/s6/services/php-fpm COPY php-fpm.run /etc/s6/services/php-fpm/run RUN chmod +x /etc/s6/services/php-fpm/run # 暴露端口 EXPOSE 80 # 启动 s6-svscan(镜像已内置入口点,无需额外 CMD)
服务定义文件示例(如 nginx.run):
sh#!/bin/sh # 必须使用 exec 启动进程,确保 s6 能正确监控主进程 exec nginx -g "daemon off;"
bash# 运行包含 Nginx + PHP-FPM 的示例容器 docker run -d \ --name alpine-s6-demo \ -p 80:80 \ -v $(pwd)/services:/etc/s6/services \ # 挂载本地服务配置 -e S6_CMD_WAIT_FOR_SERVICES=1 \ # 等待所有服务启动完成 crazy-max/alpine-s6:latest
yamlversion: '3.8' services: app: image: crazy-max/alpine-s6:latest container_name: alpine-s6-app ports: - "80:80" - "443:443" volumes: - ./services:/etc/s6/services # 自定义服务配置 - ./logs:/var/log/app # 日志持久化 environment: - S6_CMD_WAIT_FOR_SERVICES=1 - S6_KILL_GRACETIME=5000 # 进程终止等待时间 5 秒 - S6_LOGGING=info # 日志级别 restart: unless-stopped
| 环境变量 | 说明 | 默认值 |
|---|---|---|
S6_CMD_WAIT_FOR_SERVICES | 是否等待所有服务启动完成(1=等待,0=不等待) | 0 |
S6_BEHAVIOUR_IF_STAGE2_FAILS | stage2 阶段(服务启动)失败时行为:exit(退出)、crash(崩溃) | exit |
S6_LOGGING | 日志级别:none、fatal、error、warn、info、debug | info |
S6_KILL_GRACETIME | 发送终止信号后等待进程退出的时间(毫秒) | 3000 |
S6_KILL_FINISH_GRACETIME | 发送终止信号后等待 finish 脚本执行的时间(毫秒) | 3000 |
S6_SERVICES_GRACETIME | 停止所有服务的总等待时间(毫秒) | 0(无限制) |
S6_SYNC_DISKS | 是否在阶段切换时同步磁盘(1=同步,0=不同步) | 0 |
服务定义目录
所有服务配置文件需放置在 /etc/s6/services/ 目录下,每个服务对应一个子目录(如 /etc/s6/services/nginx/)。每个服务目录需包含以下文件(至少包含 run):
run:必选,服务启动脚本,需使用 exec 命令启动进程(如 exec nginx -g "daemon off;")finish:可选,服务停止后执行的清理脚本(如日志归档)down:可选,服务关闭前执行的脚本(如发送停止信号)type:可选,服务类型(longrun 长期运行服务,oneshot 一次性任务),默认 longruntimeout-up:可选,服务启动超时时间(秒),默认 0(无超时)/etc/s6/services/ 下的 run 等脚本具有可执行权限(chmod +x)。daemon off;),避免后台进程导致 s6 误判服务退出。exec 启动进程可确保 s6 正确接收和转发信号(如 SIGTERM)。s6-log 工具配置自定义日志路径(如 /var/log/app)。musl libc,部分 glibc 程序可能需要额外配置。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务