doc-locale/fr-fr/api/container_virtual_registries.md
{{< details >}}
{{< /details >}}
{{< history >}}
container_virtual_registries. Désactivé par défaut.{{< /history >}}
[!flag] La disponibilité de ces endpoints est contrôlée par un feature flag. Pour plus d'informations, consultez l'historique.
Utilisez cette API pour :
Pour en savoir plus sur l'extraction d'images de conteneurs via un registre virtuel, consultez Registre virtuel de conteneurs.
[!note] Les registres de fournisseurs cloud ne sont pas pris en charge, mais le ticket 20919 propose de modifier ce comportement.
Utilisez les endpoints suivants pour créer et gérer des registres virtuels pour le registre de conteneurs.
Liste tous les registres virtuels de conteneurs pour un groupe.
GET /groups/:id/-/virtual_registries/container/registries
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | chaîne ou entier | Oui | L'ID du groupe ou le chemin complet du groupe. Doit être un groupe principal. |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/registries"
Exemple de réponse :
[
{
"id": 1,
"group_id": 5,
"name": "my-container-virtual-registry",
"description": "My container virtual registry",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z"
}
]
Crée un registre virtuel de conteneurs pour un groupe.
POST /groups/:id/-/virtual_registries/container/registries
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | chaîne ou entier | Oui | L'ID du groupe ou le chemin complet du groupe. Doit être un groupe principal. |
name | string | Oui | Le nom du registre virtuel. |
description | string | Non | La description du registre virtuel. |
[!note] Vous pouvez créer un maximum de 5 registres virtuels par groupe.
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{"name": "my-container-virtual-registry", "description": "My container virtual registry"}' \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/registries"
Exemple de réponse :
{
"id": 1,
"group_id": 5,
"name": "my-container-virtual-registry",
"description": "My container virtual registry",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z"
}
Récupère un registre virtuel de conteneurs spécifié.
GET /virtual_registries/container/registries/:id
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre virtuel de conteneurs. |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1"
Exemple de réponse :
{
"id": 1,
"group_id": 5,
"name": "my-container-virtual-registry",
"description": "My container virtual registry",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"registry_upstreams": [
{
"id": 2,
"position": 1,
"upstream_id": 2
}
]
}
Met à jour un registre virtuel de conteneurs spécifié.
PATCH /virtual_registries/container/registries/:id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre virtuel de conteneurs. |
description | string | Non | La description du registre virtuel. |
name | string | Non | Le nom du registre virtuel. |
[!note] Vous devez fournir au moins l'un des paramètres facultatifs (
nameoudescription) dans votre requête.
Exemple de requête :
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"name": "my-container-virtual-registry", "description": "My container virtual registry"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1"
En cas de succès, renvoie un code de statut 200 OK.
[!warning] Lorsque vous supprimez un registre virtuel, vous supprimez également tous les registres en amont associés qui ne sont pas partagés avec d'autres registres virtuels, ainsi que leurs images de conteneurs et manifestes en cache.
Supprime un registre virtuel de conteneurs spécifié.
DELETE /virtual_registries/container/registries/:id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre virtuel de conteneurs. |
Exemple de requête :
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1"
En cas de succès, renvoie un code de statut 204 No Content.
{{< history >}}
container_virtual_registries. Désactivé par défaut.{{< /history >}}
Planifie la suppression de toutes les entrées de cache dans tous les registres en amont exclusifs d'un registre virtuel de conteneurs. Les entrées de cache ne sont pas planifiées pour suppression pour les registres en amont associés à d'autres registres virtuels.
DELETE /virtual_registries/container/registries/:id/cache
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre virtuel de conteneurs. |
Exemple de requête :
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1/cache"
En cas de succès, renvoie un code de statut 204 No Content.
Utilisez les endpoints suivants pour configurer et gérer les registres de conteneurs en amont.
Liste tous les registres de conteneurs en amont pour un groupe principal.
GET /groups/:id/-/virtual_registries/container/upstreams
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | chaîne ou entier | Oui | L'ID du groupe ou le chemin complet du groupe. Doit être un groupe principal. |
page | entier | Non | Le numéro de page. Par défaut : 1. |
per_page | entier | Non | Le nombre d'éléments par page. Par défaut : 20. |
upstream_name | string | Non | Le nom du registre en amont pour le filtrage par recherche floue par nom. |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/upstreams"
Exemple de réponse :
[
{
"id": 1,
"group_id": 5,
"url": "https://registry-1.docker.io",
"name": "Docker Hub",
"description": "Docker Hub registry",
"cache_validity_hours": 24,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z"
}
]
{{< history >}}
container_virtual_registries. Désactivé par défaut.{{< /history >}}
Teste la connexion à un registre de conteneurs en amont qui n'a pas encore été ajouté au registre virtuel. Cet endpoint valide la connectivité et les informations d'identification avant de créer le registre en amont.
POST /groups/:id/-/virtual_registries/container/upstreams/test
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | chaîne ou entier | Oui | L'ID du groupe ou le chemin complet du groupe. Doit être un groupe principal. |
url | string | Oui | L'URL du registre en amont. |
password | string | Non | Le mot de passe du registre en amont. |
username | string | Non | Le nom d'utilisateur du registre en amont. |
[!note] Vous devez inclure à la fois
usernameetpassworddans la requête, ou ni l'un ni l'autre. Si non défini, une requête publique (anonyme) est utilisée pour accéder au registre en amont.
L'endpoint test envoie une requête HEAD à l'URL en amont fournie en utilisant un chemin de test pour valider la connectivité et l'authentification. La réponse reçue de la requête HEAD est interprétée comme suit :
| Réponse en amont | Description | Résultat |
|---|---|---|
| 2XX | Succès. Registre en amont accessible | { "success": true } |
| 404 | Succès. Registre en amont accessible, mais artefact de test introuvable | { "success": true } |
| 401 | Échec de l'authentification | { "success": false, "result": "Error: 401 - Unauthorized" } |
| 403 | Accès interdit | { "success": false, "result": "Error: 403 - Forbidden" } |
| 5XX | Erreur du serveur en amont | { "success": false, "result": "Error: 5XX - Server Error" } |
| Erreurs réseau | Problèmes de connexion/délai d'expiration | { "success": false, "result": "Error: Connection timeout" } |
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/upstreams/test"
--data '{"url": "https://registry-1.docker.io", "username": "<your_username>", "password": "<your_password>"}' \
Exemple de réponse :
{
"success": true
}
[!note] Les codes de statut HTTP
2XX(trouvé) et404 Not Foundprovenant du registre en amont sont considérés comme des réponses réussies, car ils indiquent que le registre en amont est accessible et correctement configuré.
Liste tous les registres en amont pour un registre virtuel de conteneurs.
GET /virtual_registries/container/registries/:id/upstreams
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre virtuel de conteneurs. |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1/upstreams"
Exemple de réponse :
[
{
"id": 1,
"group_id": 5,
"url": "https://registry-1.docker.io",
"name": "Docker Hub",
"description": "Docker Hub registry",
"cache_validity_hours": 24,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"registry_upstream": {
"id": 1,
"registry_id": 1,
"position": 1
}
}
]
Crée un registre de conteneurs en amont pour un registre virtuel de conteneurs spécifié.
POST /virtual_registries/container/registries/:id/upstreams
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre virtuel de conteneurs. |
url | string | Oui | L'URL du registre de conteneurs en amont. |
name | string | Oui | Le nom du registre en amont. |
cache_validity_hours | entier | Non | La période de validité du cache pour les images de conteneurs. Par défaut : 24 heures. |
description | string | Non | La description du registre en amont. |
password | string | Non | Le mot de passe du registre en amont. |
username | string | Non | Le nom d'utilisateur du registre en amont. |
[!note] Vous devez inclure à la fois
usernameetpassworddans la requête, ou aucun des deux. Si non défini, une requête publique (anonyme) est utilisée pour accéder au registre en amont.
Vous ne pouvez pas ajouter deux registres en amont avec la même URL et les mêmes informations d'identification (username et password) au même groupe principal. À la place, vous pouvez :
[!note] Vous pouvez ajouter un maximum de 5 registres en amont à chaque registre virtuel.
Exemple de requête :
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"url": "https://registry-1.docker.io", "name": "Docker Hub", "description": "Docker Hub registry", "username": "<your_username>", "password": "<your_password>", "cache_validity_hours": 48}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1/upstreams"
Exemple de réponse :
{
"id": 1,
"group_id": 5,
"url": "https://registry-1.docker.io",
"name": "Docker Hub",
"description": "Docker Hub registry",
"cache_validity_hours": 48,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"registry_upstream": {
"id": 1,
"registry_id": 1,
"position": 1
}
}
Récupère un registre de conteneurs en amont spécifié.
GET /virtual_registries/container/upstreams/:id
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre en amont. |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1"
Exemple de réponse :
{
"id": 1,
"group_id": 5,
"url": "https://registry-1.docker.io",
"name": "Docker Hub",
"description": "Docker Hub registry",
"cache_validity_hours": 24,
"username": "user",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"registry_upstreams": [
{
"id": 1,
"registry_id": 1,
"position": 1
}
]
}
Met à jour un registre de conteneurs en amont spécifié.
PATCH /virtual_registries/container/upstreams/:id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre en amont. |
cache_validity_hours | entier | Non | La période de validité du cache pour les images de conteneurs. Par défaut : 24 heures. |
description | string | Non | La description du registre en amont. |
name | string | Non | Le nom du registre en amont. |
password | string | Non | Le mot de passe du registre en amont. |
url | string | Non | L'URL du registre en amont. |
username | string | Non | Le nom d'utilisateur du registre en amont. |
[!note] Vous devez fournir au moins l'un des paramètres facultatifs dans votre requête.
Les paramètres
usernameetpassworddoivent être fournis ensemble ou pas du tout. Si non défini, une requête publique (anonyme) est utilisée pour accéder au registre en amont.
Exemple de requête :
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"cache_validity_hours": 72}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1"
En cas de succès, renvoie un code de statut 200 OK.
Met à jour la position d'un registre de conteneurs en amont dans une liste ordonnée pour un registre virtuel de conteneurs.
PATCH /virtual_registries/container/registry_upstreams/:id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID de l'association du registre en amont. |
position | entier | Oui | La position du registre en amont. Entre 1 et 20. |
Exemple de requête :
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"position": 5}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registry_upstreams/1"
En cas de succès, renvoie un code de statut 200 OK.
Supprime un registre de conteneurs en amont spécifié.
DELETE /virtual_registries/container/upstreams/:id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre en amont. |
Exemple de requête :
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1"
En cas de succès, renvoie un code de statut 204 No Content.
Associe un registre de conteneurs en amont spécifié à un registre virtuel de conteneurs spécifié.
POST /virtual_registries/container/registry_upstreams
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
registry_id | entier | Oui | L'ID du registre virtuel de conteneurs. |
upstream_id | entier | Oui | L'ID du registre de conteneurs en amont. |
[!note] Vous pouvez associer un maximum de 5 registres en amont à chaque registre virtuel.
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{"registry_id": 1, "upstream_id": 2}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registry_upstreams"
Exemple de réponse :
{
"id": 5,
"registry_id": 1,
"upstream_id": 2,
"position": 2
}
Supprime l'association entre un registre de conteneurs en amont spécifié et un registre virtuel de conteneurs spécifié.
DELETE /virtual_registries/container/registry_upstreams/:id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID de l'association du registre en amont. |
Exemple de requête :
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/registry_upstreams/1"
En cas de succès, renvoie un code de statut 204 No Content.
{{< history >}}
container_virtual_registries. Désactivé par défaut.{{< /history >}}
Planifie la suppression de toutes les entrées de cache pour un registre en amont spécifié.
DELETE /virtual_registries/container/upstreams/:id/cache
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre en amont. |
Exemple de requête :
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1/cache"
En cas de succès, renvoie un code de statut 204 No Content.
{{< history >}}
container_virtual_registries. Désactivé par défaut.{{< /history >}}
Teste la connexion à un registre de conteneurs en amont existant avec des paramètres de remplacement facultatifs.
Ainsi, vous pouvez tester les modifications apportées à l'URL, au nom d'utilisateur ou au mot de passe avant de mettre à jour la configuration du registre en amont.
POST /virtual_registries/container/upstreams/:id/test
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre en amont. |
password | string | Non | Le mot de passe de remplacement pour les tests. |
url | string | Non | L'URL de remplacement pour les tests. Si fournie, teste la connexion à cette URL plutôt qu'à l'URL configurée du registre en amont. |
username | string | Non | Le nom d'utilisateur de remplacement pour les tests. |
L'endpoint effectue une requête HEAD vers l'URL en amont en utilisant un chemin de test pour valider la connectivité et l'authentification. Si le registre en amont dispose d'un artefact en cache, le chemin relatif du registre en amont est utilisé pour les tests. Sinon, un chemin d'espace réservé est utilisé.
Le comportement du test dépend des paramètres fournis :
La réponse reçue de la requête HEAD est interprétée comme suit :
| Réponse en amont | Signification | Résultat |
|---|---|---|
| 2XX | Succès. Registre en amont accessible | { "success": true } |
| 404 | Succès. Registre en amont accessible, mais artefact de test introuvable | { "success": true } |
| 401 | Échec de l'authentification | { "success": false, "result": "Error: 401 - Unauthorized" } |
| 403 | Accès interdit | { "success": false, "result": "Error: 403 - Forbidden" } |
| 5XX | Erreur du serveur en amont | { "success": false, "result": "Error: 5XX - Server Error" } |
| Erreurs réseau | Problèmes de connexion ou de délai d'expiration | { "success": false, "result": "Error: Connection timeout" } |
[!note] Les réponses
2XX(trouvé) et404 Not Foundindiquent toutes deux une connectivité et une authentification réussies au registre en amont. Le test ne valide pas l'existence d'un artefact spécifique.
Exemple de requête (test de la configuration existante) :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1/test"
Exemple de requête (test avec remplacement d'URL et sans informations d'identification) :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"url": "https://registry-1.docker.io"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1/test"
Exemple de requête (test avec remplacement d'URL et des informations d'identification) :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"url": "https://registry-1.docker.io", "username": "<newuser>", "password": "<newpass>"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1/test"
Exemple de requête (test avec remplacement des informations d'identification) :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{"username": "<newuser>", "password": "<newpass>"}' \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1/test"
Exemple de réponse :
{
"success": true
}
Utilisez les endpoints suivants pour gérer les images de conteneurs et les manifestes en cache pour un registre virtuel de conteneurs.
Liste les images de conteneurs et les manifestes en cache pour un registre de conteneurs en amont.
GET /virtual_registries/container/upstreams/:id/cache_entries
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier | Oui | L'ID du registre en amont. |
page | entier | Non | Le numéro de page. Par défaut : 1. |
per_page | entier | Non | Le nombre d'éléments par page. Par défaut : 20. |
search | string | Non | La requête de recherche pour le chemin relatif de l'image de conteneur (par exemple, library/nginx). |
Exemple de requête :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1/cache_entries?search=library/nginx"
Exemple de réponse :
[
{
"id": "MTUgbGlicmFyeS9uZ2lueC9tYW5pZmVzdC9zaGEyNTY6YWJjZGVmZ2hpams=",
"group_id": 5,
"upstream_id": 1,
"upstream_checked_at": "2024-05-30T12:28:27.855Z",
"file_md5": "44f21d5190b5a6df8089f54799628d7e",
"file_sha1": "74d101856d26f2db17b39bd22d3204021eb0bf7d",
"size": 2048,
"relative_path": "library/nginx/manifests/latest",
"content_type": "application/vnd.docker.distribution.manifest.v2+json",
"upstream_etag": "\"686897696a7c876b7e\"",
"created_at": "2024-05-30T12:28:27.855Z",
"updated_at": "2024-05-30T12:28:27.855Z",
"downloads_count": 5,
"downloaded_at": "2024-06-05T14:58:32.855Z"
}
]
Supprime une image de conteneur ou un manifeste en cache spécifié pour un registre en amont.
DELETE /virtual_registries/container/cache_entries/*id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | string | Oui | L'ID de l'entrée de cache, qui est l'ID en amont encodé en base64 et le chemin relatif de l'entrée de cache (par exemple, 'bGlicmFyeS9uZ2lueC9tYW5pZmVzdHMvbGF0ZXN0'). |
Exemple de requête :
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Accept: application/json" \
--url "https://gitlab.example.com/api/v4/virtual_registries/container/cache_entries/bGlicmFyeS9uZ2lueC9tYW5pZmVzdHMvbGF0ZXN0"
En cas de succès, renvoie un code de statut 204 No Content.