NavigationContentFooter

Container Registry API

Introduction

Scaleway Container Registry is a fully-managed mutualised Container Registry, designed to facilitate the storage, management and deployment of container images. The service simplifies the development-to-production workflow, as there is no need to operate your own Container Registry or to worry about the underlying infrastructure.

Concepts

Refer to our to find definitions of the different terms referring to Container Registry.

Quickstart

  1. Configure your environment variables.

    Note

    This is an optional step that seeks to simplify your usage of the APIs.

    export ACCESS_KEY="<access-key>"
    export SECRET_KEY="<secret-key>"
    export SCW_REGION="<region>"
  2. Edit the POST request payload you will use to create your Container Registry namespace. Replace the parameters in the following example:

    '{
    "name": "namespace1",
    "description": "this is my new namespace",
    "project_id": "d4c3139f-3010-4e5f-9e73-0f2df2d242f0",
    "is_public": "true"
    }'
    ParameterDescription
    nameREQUIRED Name of the namespace
    descriptionDescription of your namespace
    project_idREQUIRED The ID of the Project you want to create your namespace in. To find your Project ID you can or consult the .
    is_publicBOOLEAN Whether or not the namespace is public.
  3. Create a namespace by running the following command. Make sure you include the payload you edited in the previous step. Replace

    curl -X POST \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: $SCW_SECRET_KEY" https://api.scaleway.com/registry/v1/regions/$SCW_REGION/namespaces \
    -d '{
    "name": "namespace1",
    "description": "this is my new namespace",
    "project_id": "d4c3139f-3010-4e5f-9e73-0f2df2d242f0",
    "is_public": true
    }'

    You should get a response like the following:

    {
    "id": "99aa3f69-b194-41cf-aaca-3ef6d1012e1d",
    "name": "namespace1",
    "description": "this is my new namespace",
    "organization_id": "d4c3139f-3010-4e5f-9e73-0f2df2d242f0",
    "project_id": "d4c3139f-3010-4e5f-9e73-0f2df2d242f0",
    "status": "ready",
    "status_message": "",
    "endpoint": "rg.fr-par.scw.cloud/namespace1",
    "is_public": true,
    "size": 0,
    "created_at": "2023-04-04T13:33:46.965978759Z",
    "updated_at": "2023-04-04T13:33:46.965978759Z",
    "image_count": 0,
    "region": "string"
    }
  4. Log in to your new namespace the CLI.

    Note

    Use the following hostname format when using the Docker CLI: rg.{SCW_REGION}.scw.cloud. Replace {SCW_REGION} with your . Keep in mind you can only have one registry namespace per region. In this example we use fr-par.

    docker login rg.fr-par.scw.cloud/namespace1 -u nologin -p ${SCW_SECRET_KEY}
  5. Pull the most recent image version of the tool you wish to use. In this example we use an image.

    docker pull nginx:latest
  6. Tag the image.

    docker tag nginx:latest rg.fr-par.scw.cloud/namespace1/nginx:latest
  7. Push an image to your namespace.

    docker push rg.fr-par.scw.cloud/namespace1/nginx:latest
Requirements

To perform the following steps, you must first ensure that:

  • you have an account and are logged into the
  • you have created an and that the API key has sufficient to perform the actions described on this page.
  • you have
  • you have on your computer

Technical Information

Regions

Scaleway's infrastructure is spread across different .

Container Registry is available in the Paris, Amsterdam and Warsaw regions, which are represented by the following path parameters:

  • fr-par
  • nl-ams
  • pl-waw

Going Further

For more information about Container Registry, you can check out the following pages:

  • join the #container-registry channel
  • .

Namespaces

A namespace is a collection of container images, each bearing the unique identifier of that namespace. A namespace can be either public or private, by default.

Each namespace must have a globally unique name within its region. This means no namespaces in the same region can bear the same name.

You can use namespace privacy policies to specify whether everyone has the right to pull an image from a namespace or not. When an image is in a public namespace, anyone is able to pull it. You can set your namespace to private if you want to restrict access.

GET
/registry/v1/regions/{region}/namespaces
POST
/registry/v1/regions/{region}/namespaces
GET
/registry/v1/regions/{region}/namespaces/{namespace_id}
PATCH
/registry/v1/regions/{region}/namespaces/{namespace_id}
DELETE
/registry/v1/regions/{region}/namespaces/{namespace_id}

Images

An image represents a container image. A container image is a file that includes all the requirements and instructions of a complete and executable version of an application. When running, it becomes one or multiple instances of that application.

The visibility of an image can be public - when anyone can pull it, private - when only users within your organization can pull it, or inherited from the namespace visibility - which is the default. The visibility of your image can be changed using the .

GET
/registry/v1/regions/{region}/images
GET
/registry/v1/regions/{region}/images/{image_id}
PATCH
/registry/v1/regions/{region}/images/{image_id}
DELETE
/registry/v1/regions/{region}/images/{image_id}

Tags

Tags allow you to organize your container images. This gives you the possibility of sorting and filtering your images in any organizational pattern of your choice, which in turn helps you arrange, control and monitor your cloud resources. You can assign as many tags as you want to each image.

GET
/registry/v1/regions/{region}/images/{image_id}/tags
GET
/registry/v1/regions/{region}/tags/{tag_id}
DELETE
/registry/v1/regions/{region}/tags/{tag_id}
© 2023-2024 – Scaleway