> ## Documentation Index
> Fetch the complete documentation index at: https://bunnynet-cb9733c2-registry-cli-gha-updates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Bunny Container Registry

> Push container images to your private bunny.net registry and deploy them with Magic Containers.

<Note>
  Bunny Container Registry is in **Preview**. Usage is temporarily free during the Preview phase. Features and commands may change. See [Product Release Stages](/product-release-stages) for details.
</Note>

Bunny Container Registry is a private, OCI-compliant container registry built into bunny.net. Push images from your machine or CI pipeline and they immediately show up in the Magic Containers image list, ready to deploy. No external registry or credential setup required.

The registry is available at `registry.bunny.net`. Repositories are private to your account and namespaced by your account ID (`<account-id>/my-app`). The [bunny.net CLI](/cli) manages this namespace for you, so you only need your account ID when [pushing with Docker directly](#pushing-with-docker).

<Info>
  Magic Containers only supports images built for the **linux/amd64** architecture. When building your container image, ensure you target this platform using `--platform linux/amd64`.
</Info>

## Quickstart

The recommended way to push images is with the [bunny.net CLI](/cli).

<Note>
  `bunny registry` is **experimental** and may change in future releases.
</Note>

<Steps>
  <Step title="Install the bunny.net CLI and log in">
    If you haven't already, [install the CLI](/cli/installation) and authenticate:

    ```bash theme={null}
    bunny login
    ```
  </Step>

  <Step title="Push your image">
    Push a local Docker image by name. The CLI tags it for the registry and pushes it under your account namespace automatically:

    ```bash theme={null}
    bunny registry push my-app:latest
    ```

    `push` shells out to the Docker CLI, so Docker must be installed and the image must exist in Docker's image store.
  </Step>

  <Step title="Deploy it">
    The image now appears in the Magic Containers image list. Select it when you [deploy](/magic-containers/deploy) or [update](/magic-containers/update) an app; no registry credentials need to be configured.
  </Step>
</Steps>

## Using the bunny.net CLI

The [`bunny registry`](/cli/commands/registry) command pushes images and lists repositories and tags on the registry. Unlike Docker, you don't need to tag images with the registry host or your account ID: the CLI adds and hides the account namespace automatically, so you always work with the bare repository name.

<Steps>
  <Step title="Push to an explicit repository and tag">
    Without flags, `push` derives the repository and tag from the image name. Override either with flags:

    ```bash theme={null}
    bunny registry push my-app:dev --repository my-app --tag v1
    ```
  </Step>

  <Step title="List repositories and tags">
    Verify the push by listing what's on the registry:

    ```bash theme={null}
    # List repositories (alias: ls)
    bunny registry list

    # List tags for a repository
    bunny registry tags my-app
    ```

    `list` and `tags` talk to the registry directly and don't require Docker.
  </Step>
</Steps>

## Pushing with Docker

If you can't use the bunny.net CLI, for example in a CI pipeline where only Docker is available, you can push images with Docker directly. Unlike the CLI, you handle authentication and the account namespace yourself.

<Steps>
  <Step title="Log in to the registry">
    Authenticate with `token` as the username and your [API key](/account/api-keys) as the password:

    ```bash theme={null}
    docker login registry.bunny.net --username token
    ```
  </Step>

  <Step title="Tag your image">
    Tag the image with the registry host and your account ID. Replace `my-app` with the name of your image and `<account-id>` with your account ID:

    ```bash theme={null}
    docker tag my-app registry.bunny.net/<account-id>/my-app:latest
    ```

    <Tip>
      Run [`bunny whoami`](/cli/commands/auth#bunny-whoami) to get your account ID. You can also find it in the dashboard: go to [Image Registries](https://dash.bunny.net/magic-containers/image-registries) and click **How to Push Images** to see these Docker commands with your account ID already filled in.
    </Tip>
  </Step>

  <Step title="Push the image">
    ```bash theme={null}
    docker push registry.bunny.net/<account-id>/my-app:latest
    ```

    Once pushed, the image appears in the Magic Containers image list, where you can select it to deploy.
  </Step>
</Steps>

## Deploying pushed images

Images pushed to the Bunny Container Registry appear automatically in the image list when you [deploy](/magic-containers/deploy) or [update](/magic-containers/update) a Magic Containers app. Select the repository and tag to deploy; no registry credentials need to be configured.

To automate the whole flow, so every push to your repository builds an image, pushes it to the registry, and rolls it out, see [Deploy with GitHub Actions](/magic-containers/deploy-with-github-actions).

## Limits

The following limits apply to each account:

* Repositories per account: 100.
* Tags per account: 1,000.
* Blobs per account: 5,000. Blobs are the layers, configs, and manifests that make up your images.
* Maximum image size: 10 GB.
* Maximum total storage: 100 GB.
