# Gyro Containers common errors: image cannot be pulled, crashing, out of memory, port mismatch, no capacity

https://www.gyrohosting.com/en/knowledgebase/article/gyro-containers-common-errors

- **What you will learn**: How to find the cause when a service status shows **Error** or a waiting state, and the fixes for the most common errors.
- **Time**: 10 minutes
- **Who this is for**: Developers whose service does not run or keeps restarting.
- **What you need**: A service and your environment's panel.

## 1. How to diagnose

1. In the **Services** table look at the service's **status label**; the **problem name** and a suggested fix appear under the row.
2. With **Logs** > **Previous instance** read the last log of the crashed instance ([Logs and graphs](https://www.gyrohosting.com/en/knowledgebase/article/gyro-containers-logs-and-graphs)).
3. Look at **Latest warnings** in the environment.

```
gyro container service get 12345 api      # state + problem code
gyro container logs 12345 api --previous 1
gyro container events 12345
```

## 2. Error table

| Shown in the panel | Technical code | Meaning and fix |
| --- | --- | --- |
| **Image cannot be pulled** | ImagePullBackOff / ErrImagePull | The image name or tag is wrong, or credentials for a private registry are missing. Check the name/tag (try `docker pull`); for a private image enter the credentials in **Node Pool > Private image registry** ([first app](https://www.gyrohosting.com/en/knowledgebase/article/gyro-containers-publish-first-app)). In the Gyro registry the address must be `registry.ist.gyrohosting.com/<your-code>/…`. |
| **Invalid image** | InvalidImageName | There is a typo in the image name (for example a space or capital letter). Check the `name:tag` form. |
| **Application crashing** | CrashLoopBackOff | The application stops as soon as it starts. Read the **Previous instance** log: a missing environment variable, no database connection, a wrong command. |
| **Out of memory** | OOMKilled | The memory reserved for the replica is not enough. Increase **Memory / replica** in **New revision / settings** (your capacity must allow it). |
| **No capacity** / **Waiting for capacity** | Unschedulable | There is no room in the node pool or the nodes are being prepared. Reduce the replica count or size, wait until the nodes are **Ready**, or move to a higher package. |
| **Start-up configuration error** | CreateContainerConfigError | Most often the image wants the **root user**. Use a non-root image or add `USER 10001` to the `Dockerfile`. |
| **Could not start** | CreateContainerError / RunContainerError | The command or arguments are wrong. Check the **Command** field (a JSON array or space separated). |
| **Ran and finished** | Completed | Services must keep running; your application exits at once. Make sure it starts a foreground server process. |
| **Exited with an error** | Error | Check the logs. |

## 3. Port mismatch and health check

**Symptom:** The service stays in **Deploying** or the ready replica count shows 0/1; when you open the address you get **502/503**.

**Cause:** Your application listens on a different port than the one you entered in the panel (for example `8080` in the panel but `3000` in the app), or it listens only on `127.0.0.1`, or the **health check path** is not answering.

**Fix:**

1. Confirm the port the application listens on from the logs.
2. In **New revision / settings** set **Port** to the application's port.
3. The application must listen on `0.0.0.0` (for example `app.run(host="0.0.0.0", port=8080)`); `localhost` is reachable only from inside the container.
4. The **health check path** must be `/` or a path that really returns 200. If unsure, leave it empty (a TCP check is used).

## 4. Error messages when creating a service

| Message | Fix |
| --- | --- |
| "Service name: lowercase letters, digits and '-', starts with a letter, up to 40 characters, cannot start with 'gyro-'." | Write the name according to the rule. |
| "A service with this name exists." | Choose another name. |
| "You reached the service limit." | 10/20/40 services depending on the package; delete unused ones or move to a higher package. |
| "Not enough capacity in your node pool…" | Reduce replicas/size; compare the needed and available capacity in the message. |
| "Replica count is outside the plan limit." | Do not exceed the replica count allowed in the package (5/10/20). |
| "Port must be 1-65535; a public service needs a port." | Enter a port for a public service. |
| "Invalid variable name/value (GYRO_ and reserved prefixes)." | Change the variable name. |
| "This image cannot be used on the platform." / "The image failed the security scan." | You cannot use a rejected image; try another. |
| "The service is suspended; changes are not allowed." | Top up your balance ([suspension](https://www.gyrohosting.com/en/knowledgebase/article/low-balance-warnings-suspension-deletion)). |
| "Too many actions, try again in a few minutes." | A short rate limit; wait a little. |

### Domain and certificate issues

If a domain stays **Waiting for DNS**, check the DNS record and any proxy; details are in [Domain and SSL](https://www.gyrohosting.com/en/knowledgebase/article/gyro-containers-domain-and-ssl).

## 5. If it is still not solved

When you open a support ticket write: your service number, the service name, the status label, the relevant 10-20 lines from the **Previous instance** log (remove passwords and keys) and the approximate time of the error.

## 6. Frequently asked questions

**The service first showed "Waiting for capacity"; what should I do?**

With a new order the nodes take a few minutes to be prepared; services start when the **Node Pool** shows **Ready**.

**Every release fails but the old revision keeps running; what should I do?**

This is expected: old replicas are not stopped until the new revision is ready. Fix the error and release again, or return to the previous revision.

**My application runs for a minute and then crashes; what should I do?**

Look at the logs and the memory graph; it may be a memory leak or too little memory (OOMKilled).

**The image cannot be pulled from the Gyro registry; what should I do?**

The image name must be under your code prefix; the image may have been deleted by automatic clean-up. Check whether it is in the **Image Registry** list.

## Next step

- [Gyro Containers limits and rules](https://www.gyrohosting.com/en/knowledgebase/article/gyro-containers-limits-and-rules)
- [Scaling, updating and rollback](https://www.gyrohosting.com/en/knowledgebase/article/gyro-containers-scaling-updating-rollback)
