Chapter 5. Red Hat Quay repository overview


A repository provides a central location for storing a related set of container images that share a namespace in Quay. You can group repositories under namespaces for individual users, teams, or organizations.

For example, you might have a namespace for your personal projects, one for your company, or one for a specific team within your organization.

Red Hat Quay provides users with access controls for their repositories. Users can make a repository public, meaning that anyone can pull, or download, the images from it, or users can make it private, restricting access to authorized users or teams.

You can create a repository in Red Hat Quay in several ways, depending on your use case:

  • You can push an image with the relevant podman or docker command.
  • You can use the Red Hat Quay UI.
  • You can use the Red Hat Quay API.
  • For OCI artifacts, for example, a large-language model (LLM) or machine learning application, you can use skopeo or oras to copy the artifact to your repository.

5.1. Creating a repository by using the UI

To create an image repository in Quay, you can use the UI. You select a namespace and set a repository name and visibility.

Use the following procedure to create a repository using the Quay UI.

Procedure

  1. Click Repositories on the navigation pane.
  2. Click Create Repository.
  3. Select a namespace, for example, quayadmin, and then enter a Repository name, for example, testrepo.

    Important

    Do not use the following words in your repository name: * build * trigger * tag * notification

    When these words are used for repository names, users are unable access the repository, and are unable to permanently delete the repository. Attempting to delete these repositories returns the following error: Failed to delete repository <repository_name>, HTTP404 - Not Found.

  4. Click Create.

    Now, your example repository should populate under the Repositories page.

  5. Optional. Click Settings Repository visibility Make private to set the repository to private.

5.2. Creating a repository by using Podman

To create a repository in Red Hat Quay, you can push an image with Podman. The push creates the repository if it does not already exist.

If you push an image through the command-line interface (CLI) without first creating a repository on the UI, the created repository is set to Private.

Prerequisites

  • You have download and installed the podman CLI.
  • You have logged into your registry.
  • You have pulled an image, for example, busybox.

Procedure

  1. Pull a sample page from an example registry. For example:

    $ sudo podman pull busybox

    Example output

    Trying to pull docker.io/library/busybox...
    Getting image source signatures
    Copying blob 4c892f00285e done
    Copying config 22667f5368 done
    Writing manifest to image destination
    Storing signatures
    22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9

  2. Tag the image on your local system with the new repository and image name. For example:

    $ sudo podman tag docker.io/library/busybox quay-server.example.com/quayadmin/busybox:test
  3. Push the image to the registry. Following this step, you can use your browser to see the tagged image in your repository.

    $ sudo podman push --tls-verify=false quay-server.example.com/quayadmin/busybox:test

    Example output

    Getting image source signatures
    Copying blob 6b245f040973 done
    Copying config 22667f5368 done
    Writing manifest to image destination
    Storing signatures

5.3. Creating a repository by using Skopeo

To create a repository in Red Hat Quay when Podman cannot pull an artifact type, you can use the skopeo copy command to copy the artifact from a source registry.

In some cases, the podman CLI tool is unable to pull certain artifact types, for example, application/x-mlmodel, or other AI/ML artifacts. Attempting to use podman pull with this artifact type results in the following error:

Error: parsing image configuration: unsupported image-specific operation on artifact with type "application/x-mlmodel"

As an alternative, you can use skopeo copy to copy an artifact from one location to your Red Hat Quay repository.

Prerequisites

  • You have installed the skopeo CLI.
  • You have logged in to a source registry (in this example, \registry.redhat.io) and have a valid authentication file (~/.docker/config.json). Alternatively, you can provide credentials by using the --src-username and --src-password parameters when running a command with the skopeo CLI.
  • You have logged in to your Red Hat Quay repository.
  • Depending on the size of your AI/ML artifact, you might have to prepare your registry to accept large artifacts.

Procedure

  • Use the skopeo copy command on an artifact to copy the artifact to your Red Hat Quay repository. For example:

    $ sudo skopeo copy --dest-tls-verify=false --all \
      --src-username <source_username> --src-password <source_password> \
      --src-authfile ~/.docker/config.json \
      --dest-username <username> --dest-password <password> \
      docker://registry.redhat.io/rhelai1/granite-8b-code-instruct:1.4-1739210683 \
      docker://quay-server.example.com/<namespace>/granite-8b-code-instruct:latest

    where:

    --dest-tls-verify=false
    Specifies that SSL/TLS verification for the destination registry is disabled. This parameter is optional.
    --all
    Specifies that all image manifests are copied, including multi-architecture images. This parameter is optional.
    --src-username / --src-password
    Specifies the source registry credentials. This parameter is optional. If you are not logged into a registry, you can pass in the source registry credentials with these parameters.
    --src-authfile
    Specifies the path to your Docker authentication file. Typically located at ~/.docker/config.json. This parameter is optional.
    --dest-username / --dest-password
    Specifies your Red Hat Quay registry username and password.
    docker://registry.redhat.io/…​
    Specifies the source image or artifact from the Red Hat container registry. Ensure that you are logged in to the registry and that you can pull the image.
    docker://quay-server.example.com/…​

    Specifies the URL of your Red Hat Quay repository appended with a namespace and the name of the image.

    Example output

    Getting image source signatures
    Checking if image destination supports signatures
    Copying blob 9538fa2b8ad9 done   |
    Copying blob 491ae95f59a2 done   |
    Copying blob 01196d075d77 done   |
    Copying blob e53a4633c992 done   |
    Copying blob c266e9cfa731 done   |
    Copying blob dae0e701d9b2 done   |
    Copying blob 1e227a2c78d8 done   |
    Copying blob 94ff9338861b done   |
    Copying blob 2f2bba45146f done   |
    Copying blob d3b4df07a0ce done   |
    Copying blob f533a8dbb852 done   |
    Copying config 44136fa355 done   |
    Writing manifest to image destination
    Storing signatures

Next steps

  • After you have pushed a machine learning artifact to your Red Hat Quay repository, you can view tag information by using the UI or view model card information by using the UI.

5.4. Creating a repository by using the API

To create an image repository in Red Hat Quay, you can use the API.

Prerequisites

Procedure

  1. Enter the following command to create a repository using the POST /api/v1/repository endpoint:

    $ curl -X POST \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Content-Type: application/json" \
      -d '{
        "repository": "<new_repository_name>",
        "visibility": "<private>",
        "description": "<This is a description of the new repository>."
      }' \
      "https://quay-server.example.com/api/v1/repository"

    Example output

    {"namespace": "quayadmin", "name": "<new_repository_name>", "kind": "image"}

5.5. Deleting a repository by using the UI

To delete an image repository in Quay, you can use the UI. You remove the repository and its tags from the selected namespace.

Prerequisites

  • You have created a repository.

Procedure

  1. On the Repositories page of the v2 UI, check the box of the repository that you want to delete, for example, quayadmin/busybox.
  2. Click the Actions drop-down menu.
  3. Click Delete.
  4. Type confirm in the box, and then click Delete.

    After deletion, you are returned to the Repositories page.

To delete a repository from Red Hat Quay, you can use the API.

Prerequisites

Procedure

  1. Enter the following command to delete a repository using the DELETE /api/v1/repository/{repository} endpoint:

    $ curl -X DELETE   -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
  2. The CLI does not return information when deleting a repository from the CLI. To confirm deletion, you can check the Red Hat Quay UI, or you can enter the following GET /api/v1/repository/{repository} command to see if details are returned for the deleted repository:

    $ curl -X GET -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"

    Example output

    {"detail": "Not Found", "error_message": "Not Found", "error_type": "not_found", "title": "not_found", "type": "http://quay-server.example.com/api/v1/error/not_found", "status": 404}
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat Documentation

Legal Notice

Theme

© 2026 Red Hat
Back to top