This is an optional step that seeks to simplify your usage of the APIs.
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 dedicated concepts page to find definitions of the different terms referring to Container Registry.
Quickstart
-
Configure your environment variables.
Noteexport ACCESS_KEY="<access-key>"export SECRET_KEY="<secret-key>"export SCW_REGION="<region>" -
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"}'Parameter Description name
REQUIRED Name of the namespace description
Description of your namespace project_id
REQUIRED The ID of the Project you want to create your namespace in. To find your Project ID you can list the projects or consult the Scaleway console. is_public
BOOLEAN Whether or not the namespace is public. -
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"} -
Log in to your new namespace the docker CLI.
NoteUse the following hostname format when using the Docker CLI:
rg.{SCW_REGION}.scw.cloud
. Replace{SCW_REGION}
with your region of choice. Keep in mind you can only have one registry namespace per region. In this example we usefr-par
.docker login rg.fr-par.scw.cloud/namespace1 -u nologin -p ${SCW_SECRET_KEY} -
Pull the most recent image version of the tool you wish to use. In this example we use an nginx image.
docker pull nginx:latest -
Tag the image.
docker tag nginx:latest rg.fr-par.scw.cloud/namespace1/nginx:latest -
Push an image to your namespace.
docker push rg.fr-par.scw.cloud/namespace1/nginx:latest
To perform the following steps, you must first ensure that:
- you have an account and are logged into the Scaleway console
- you have created an API key and that the API key has sufficient IAM permissions to perform the actions described on this page.
- you have installed
curl
- you have installed Docker on your computer
Technical Information
Regions
Scaleway's infrastructure is spread across different regions and Availability Zones.
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:
- Container Registry Documentation
- Container Registry FAQ
- Scaleway Slack Community join the #container-registry channel
- Contact our support team.
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 update image endpoit.
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}