Eggs 与 Docker 镜像
了解 Daki 门户中 Egg 与 Docker 镜像的区别、它们如何协同工作,以及有哪些已打安全补丁的 Daki Yolks 镜像可用。
在 门户中配置服务器时,你会遇到两个相关概念:Egg 和 Docker 镜像。了解它们之间的区别,有助于你正确地配置服务器。
你将学到
- 什么是 Egg,它控制什么
- 什么是 Docker 镜像,以及如何选择合适的镜像
- Egg 与 Docker 镜像如何协同工作
- 有哪些 Node.js 和 Python 版本可用,以及 Daki 如何为它们打补丁
- 何时更改它们各自
什么是 Egg?
Egg 是一个服务器模板,用于定义你运行的服务器的整体类型。它指定:
- 使用的编程语言或框架
- 可供选择的 Docker 镜像
- 默认的启动命令模板
- 预先配置的启动变量及其默认值
- 全新安装时创建的文件
Daki 上可用的 Egg 示例:
- Node.js — 用于 JavaScript 应用和 Discord 机器人
- Python — 用于 Python 应用和 Discord 机器人
- Java — 用于 Java 应用(付费套餐可用)
- Rust — 用于 Rust 应用(付费套餐可用)
- Minecraft Java — 用于 Minecraft 游戏服务器(游戏服务器套餐)
你在创建服务器时选择 Egg。 在 Free Tier 上,仅提供 Node.js 和 Python 两种 Egg。付费套餐可以使用更多 Egg。
要更改现有服务器的 Egg,请进入 Settings 标签页。请注意,更改 Egg 会触发重新安装 — 强烈建议事先备份你的文件。
什么是 Docker 镜像?
Docker 镜像是你的服务器所运行的运行时的具体版本。Egg 决定语言,Docker 镜像决定版本。
例如,Node.js Egg 提供 Node.js 22、24 和 26,Python Egg 提供 Python 3.11 至 3.15。你在 Startup 标签页中选择 Docker 镜像。
Daki Yolks:已打安全补丁的镜像
Daki 上所有 Node.js 和 Python 服务器,无论是 Free Tier 还是付费套餐,都运行在 Daki Yolks 上:这是我们自己构建的 Docker 镜像,可直接替代大多数 Pterodactyl 主机使用的社区镜像。这些社区镜像很少重新构建,因此安全修复可能会滞后数月。
- 始终打补丁。 每 6 小时,我们会检查是否发布了新的官方 Node.js 或 Python 基础镜像,并重新构建受影响的版本。每周一次,所有镜像都会重新构建,以获取操作系统更新(Debian 13)。
- 兼容。 工具、入口点和行为与之前相同,因此你的机器人可以继续运行。Node.js 镜像包含
git、ffmpeg、sqlite3、build-essential、python3、typescript和ts-node;Python 镜像包含gcc、g++、git和ffmpeg。 - 经过测试。 每个镜像在发布前,都必须能以门户启动它的方式启动并运行一个真实的 TypeScript 或 Python 程序。
- 开源。 这些镜像以 MIT 许可证公开发布在 GitHub 上。
| 运行时 | 版本 | 支持截止 |
|---|---|---|
| Node.js | 26 | 2029 年 4 月 |
| Node.js | 24 | 2028 年 4 月 |
| Node.js | 22 | 2027 年 4 月 |
| Python | 3.15 | 2031 年 10 月 |
| Python | 3.14 | 2030 年 10 月 |
| Python | 3.13 | 2029 年 10 月 |
| Python | 3.12 | 2028 年 10 月 |
| Python | 3.11 | 2027 年 10 月 |
重启即可更新。 每次重新构建后,镜像名称保持不变。运行中的服务器会保留当前镜像,直到重启;下次启动时,它会自动获取最新的补丁版本。你的文件不会受到影响。
较旧的版本(已停止支持)
Node.js 18 至 21、23 和 25,以及 Python 3.9 和 3.10 不再接收其开发者提供的安全修复。它们仍可供选择,以便现有项目继续运行,但在镜像列表中会标记为 EOL - no security updates,而且我们不会重新构建它们。请尽快迁移到受支持的版本。
切换到新的主版本时(例如从 Node.js 20 切换到 24,或从 Python 3.10 切换到 3.13),请重新安装依赖:运行 npm rebuild,或删除 node_modules 后再次运行 npm install,并重新创建 Python 虚拟环境。
它们如何协同工作
可以这样理解:
| 概念 | 类比 | 设置位置 |
|---|---|---|
| Egg | 选择用 Python 编写程序 | Settings 标签页(或在创建服务器时) |
| Docker 镜像 | 选择 Python 3.12 还是 3.13 | Startup 标签页 |
你只需选择一次 Egg(或很少更改),并在项目需要不同版本时调整 Docker 镜像。
何时更改
以下情况更改 Docker 镜像:
- 你需要更新的运行时版本(例如从已停止支持的 Node.js 20 升级到 Node.js 24)
- 你的项目需要某个特定的次版本以保证兼容性
以下情况更改 Egg:
- 你想完全切换编程语言(例如从 Node.js 切换到 Python)
- 你需要不同的默认配置或预定义的安装设置
更改 Egg 会触发重新安装。虽然文件通常不会被自动删除,但某些文件可能会被覆盖,并可能导致设置不兼容。更改 Egg 之前,强烈建议先备份。参见服务器设置。
常见问题
Discord 机器人应该使用哪个 Egg?
Discord.js/JavaScript 机器人请使用 Node.js Egg,discord.py/Python 机器人请使用 Python Egg。
如果列表中没有我需要的 Docker 镜像怎么办?
可用的镜像由 Egg 定义。如果你没有看到需要的版本,请联系支持 — 按需可能提供其他镜像。
我的镜像显示 'EOL - no security updates',应该怎么办?
该版本已不再由其开发者维护。你的服务器仍可运行,但不再获得安全修复。请在 Startup 标签页中选择受支持的版本(Node.js 22、24、26 或 Python 3.11 至 3.15),重新安装依赖并重启。
如何获取最新的安全补丁?
重启你的服务器。每当发布修复时,Daki Yolks 都会自动重新构建,服务器会在下次启动时获取新构建。
更改 Docker 镜像会删除我的文件吗?
不会。仅更改 Docker 镜像(在 Startup 标签页中)不会影响你的文件。只有更改 Egg(在 Settings 标签页中)才会触发重新安装。
下一步
- 启动设置 — 选择你的 Docker 镜像并配置启动命令。
- 服务器设置 — 更改 Egg 或重新安装服务器。
- 部署 Discord.js 机器人 — Node.js 的端到端部署指南。
- 部署 Python 机器人 — Python 的端到端部署指南。