
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
🌏 包含自动运行和s6-overlay的最新Linux Docker基础镜像。
将官方http://hub.docker.com/_/ubuntu%E3%80%81http://hub.docker.com/_/debian%E5%92%8Chttp://hub.docker.com/_/alpine Docker镜像与https://github.com/just-containers/s6-overlay%E5%92%8C%E8%87%AA%E5%8A%A8%E8%BF%90%E8%A1%8C%E6%9C%BA%E5%88%B6%E7%9B%B8%E7%BB%93%E5%90%88%E3%80%82%E6%AD%A4%E8%AE%BE%E7%BD%AE%E7%AE%80%E5%8C%96%E4%BA%86%E8%B7%A8%E5%90%84%E7%A7%8D%E6%9E%B6%E6%9E%84%E6%9E%84%E5%BB%BA%E5%8F%AF%E7%A7%BB%E6%A4%8D%E3%80%81%E7%94%9F%E4%BA%A7%E5%B0%B1%E7%BB%AA%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E7%9A%84%E8%BF%87%E7%A8%8B%E3%80%82
Docker镜像提供Debian、Ubuntu和Alpine版本。
Ubuntu
Debian
Alpine
构建并尝试以下Dockerfile示例:
Ubuntu
DockerfileFROM shinsenter/ubuntu-s6:latest # 添加你的指令 # 例如: # ADD --chown=$APP_USER:$APP_GROUP ./myproject/ /var/www/html/
Debian
DockerfileFROM shinsenter/debian-s6:latest # 添加你的指令 # 例如: # ADD --chown=$APP_USER:$APP_GROUP ./myproject/ /var/www/html/
Alpine
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的脚本,容器启动时会打印欢迎消息。
禁用自动运行脚本
要禁用自动运行脚本,设置环境变量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镜像并安装更适合的调度工具(如https://github.com/aptible/supercronic%EF%BC%89%E3%80%82
要在容器中启用定时任务,可使用ENABLE_CRONTAB=1启动容器。此设置会激活Crontab服务,从$CRONTAB_DIR(默认/etc/crontab.d)指定的目录加载配置。
定时任务将以$APP_USER:$APP_GROUP(默认www-data:www-data)用户身份运行,主目录由$CRONTAB_HOME(默认/var/www/html)设置。
以下是添加crontab的Dockerfile示例:
DockerfileFROM shinsenter/debian-s6:latest ENV ENABLE_CRONTAB=1 # 通过RUN指令创建crontab条目 RUN echo '* * * * * echo "echo This line will run every minute!" | tee /tmp/cron-every-minute.txt' >> /etc/crontab.d/sample1; # 或通过ADD指令复制crontab条目 ADD ./sample2 /etc/crontab.d/
crontab条目的格式如下:
# 任务定义: # .---------------- 分钟 (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环境变量轻松设置定时任务。容器启动时,这些设置会加载到crontab中,便于后续修改。
yamlservices: web: image: shinsenter/debian-s6:latest environment: ENABLE_CRONTAB: "1" CRONTAB_SETTINGS: "* * * * * echo 'This line will run every minute!' | tee /tmp/cron-every-minute.txt"
有关定时任务的环境变量详情,请参见下文其他系统设置部分。
通过设置环境变量DEBUG=1启用“调试模式”以获取更详细的日志。可在docker run和docker-compose.yml中使用。
命令行
shelldocker run -e DEBUG=1 shinsenter/debian-s6:latest bash
docker-compose.yml
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时禁用所有自动运行脚本。 | 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 | 未设置 | 接收定时任务输出的电子邮件地址。 | admin@example.com |
CRONTAB_PATH | $PATH | 定义定时任务使用的可执行文件搜索路径。 | /path/for/crontab/bin |
CRONTAB_SETTINGS | 未设置 | 允许在docker-compose.yml中直接定义定时任务,便于管理容器内的计划任务。 | 0 0 * * * echo "Hello new day!" |
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授权。
请尊重创建这些镜像所涉及的智力成果。如果您打算复制或使用本项目的想法,感谢您给予适当的引用。
来自越南 🇻🇳 的爱。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务