# Push and pull images
Source: https://docs.infraista.com/en/developer-tools/container-registry/push-and-pull-images



## Create a repository [#create-a-repository]

1. Open **Container Registry** and select **Create repository**.
2. Enter a **Name**: lowercase letters and numbers, with dots, dashes or underscores between them.
   Repositories can't be renamed later, because clusters and jobs pull by path.
3. Optionally add a **Description**, and choose **Visibility**, **Immutable tags**, **Scan on push** and
   **Retention** (see [Repository settings](/en/developer-tools/container-registry/repository-settings)).
4. Select **Create repository**.

Pushing to a repository name that doesn't exist yet also creates it.

## Make a robot token [#make-a-robot-token]

Robot tokens are logins for CI and scripts. They reach every repository in your namespace.

1. On the **Container Registry** page, under **Robot tokens**, select **Create token**.
2. Enter a **Token name** and choose the **Access**: **Pull only**, or **Pull and push**.
3. Copy the token now: it's shown only once.

<Shot name="developer-tools/container-registry/tokens" alt="Robot tokens with their usernames and access, and the form to create a token" />

You can have up to 20 robot tokens. If a token leaks, revoke it and make a new one.

## Sign in and push [#sign-in-and-push]

The username is shown with the token. It contains a `$`, so keep it in single quotes:

```bash
# Sign in; paste the token when asked
docker login registry.infraista.cloud -u 'robot$northwind-labs+ci-deploys'

# Tag and push
docker tag my-image:latest registry.infraista.cloud/northwind-labs/web-app:2.4.0
docker push registry.infraista.cloud/northwind-labs/web-app:2.4.0
```

In scripts and CI, keep the token in a secret and pass it on standard input:

```bash
echo "$REGISTRY_TOKEN" | docker login registry.infraista.cloud -u 'robot$northwind-labs+ci-deploys' --password-stdin
```

Pushed images show in the console within seconds, with their digest, size and layers.

<Shot name="developer-tools/container-registry/repository" alt="A repository's tags with their digest, size, push time and scan results" />

## Pull an image [#pull-an-image]

```bash
docker pull registry.infraista.cloud/northwind-labs/web-app:2.4.0
```

Select a tag to see its pull commands. To pin an exact image in production, **pull by digest**:

```bash
docker pull registry.infraista.cloud/northwind-labs/web-app@sha256:…
```

Private repositories can be pulled by your team, robot tokens and connected Kubernetes clusters.
Public repositories can be pulled by anyone, without signing in.

## Delete a tag [#delete-a-tag]

Select the tag and **Delete tag**. Pulls of that tag fail afterwards; other tags of the same image keep
working.

## Related [#related]

* [Use with Pipelines and Kubernetes](/en/developer-tools/container-registry/use-with-pipelines-and-kubernetes)
* [Repository settings](/en/developer-tools/container-registry/repository-settings)
