跳到正文

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.js262029 年 4 月
Node.js242028 年 4 月
Node.js222027 年 4 月
Python3.152031 年 10 月
Python3.142030 年 10 月
Python3.132029 年 10 月
Python3.122028 年 10 月
Python3.112027 年 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.13Startup 标签页

你只需选择一次 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 标签页中)才会触发重新安装。


下一步