# Eggs & Docker Images

> Understanding the difference between eggs and Docker images in the Daki Portal — and how they work together.

When configuring your server in the Portal, you will encounter two related concepts: **eggs** and **Docker images**. Understanding the difference between them helps you configure your server correctly.

## What you'll learn

- What an egg is and what it controls
- What a Docker image is and how to choose the right one
- How eggs and Docker images work together
- When to change each one

---

## What Is an Egg?

An **egg** is a server template that defines the overall type of server you are running. It specifies:

- Which programming language or framework is used
- What Docker images are available to choose from
- The default startup command template
- Which startup variables and defaults are pre-configured
- What files are created on a fresh install

Examples of eggs available on Daki:
- **Node.js** — for JavaScript applications and Discord bots
- **Python** — for Python applications and Discord bots
- **Java** — for Java applications (available on paid plans)
- **Rust** — for Rust applications (available on paid plans)
- **Minecraft Java** — for Minecraft game servers (game server plans)

**You choose your egg when you create a server.** On the Free Tier, only the Node.js and Python eggs are available. Paid plans give access to additional eggs.

To change an existing server's egg, go to the **Settings** tab. Note that changing the egg triggers a reinstall — creating a backup of your files beforehand is strongly recommended.

---

## What Is a Docker Image?

A **Docker image** is the specific version of a runtime that your server runs inside. Where the egg determines the language, the Docker image determines the version.

For example, the Node.js egg may offer these Docker images:
- Node.js 18
- Node.js 20
- Node.js 22
- Node.js 24

You select the Docker image in the **Startup** tab.

---

## How They Work Together

Think of it this way:

| Concept | Analogy | Set in |
| :--- | :--- | :--- |
| **Egg** | Choosing to write in Python | Settings tab (or at server creation) |
| **Docker image** | Choosing Python 3.11 vs 3.12 | Startup tab |

You pick the egg once (or change it rarely), and you adjust the Docker image whenever your project requires a different version.

---

## When to Change Each One

### Change the Docker image when:
- You need a newer runtime version (e.g., upgrading from Node.js 18 to Node.js 22)
- Your project requires a specific minor version for compatibility

### Change the egg when:
- You want to switch programming languages entirely (e.g., from Node.js to Python)
- You need a different default configuration or pre-defined install setup

> **Warning:** Changing the egg triggers a reinstall. While files are not normally deleted automatically, certain files may be overwritten and an incompatible setup can result. Backups are strongly recommended before changing the egg. See [Server Settings](https://daki.cc/wiki/guides/server-settings).

---

## Frequently Asked Questions

**Which egg should I use for a Discord bot?**

Use the **Node.js** egg for Discord.js/JavaScript bots, and the **Python** egg for discord.py/Python bots.

**What if my required Docker image isn't listed?**

The available images are defined by the egg. If you don't see the version you need, contact support — additional images may be available on request.

**Does changing the Docker image delete my files?**

No. Changing only the Docker image (in the Startup tab) does not affect your files. Only changing the egg (in the Settings tab) triggers a reinstall.

---

## Next Steps

- [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Select your Docker image and configure your startup command.
- [Server Settings](https://daki.cc/wiki/guides/server-settings) — Change the egg or reinstall your server.
- [Deploy a Discord.js Bot](https://daki.cc/wiki/guides/deploy-discordjs) — End-to-end deployment guide for Node.js.
- [Deploy a Python Bot](https://daki.cc/wiki/guides/deploy-python) — End-to-end deployment guide for Python.

---
Source: https://daki.cc/wiki/guides/eggs-and-images
