InfoGrab Docs

컨테이너 가상 레지스트리 API

요약

이 엔드포인트의 사용 가능 여부는 기능 플래그로 제어됩니다. 가상 레지스트리를 통해 컨테이너 이미지를 가져오는 방법은 컨테이너 가상 레지스트리를 참조하세요. 클라우드 제공업체 레지스트리는 지원되지 않지만 이슈 20919에서 이 동작을 변경하도록 제안하고 있습니다.

히스토리
Feature flag

이 엔드포인트의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.

이 API를 사용하여:

  • 컨테이너 레지스트리를 위한 가상 레지스트리를 생성·관리합니다.
  • 업스트림 컨테이너 레지스트리를 구성합니다.
  • 캐시된 컨테이너 이미지와 매니페스트를 관리합니다.

가상 레지스트리를 통해 컨테이너 이미지를 가져오는 방법은 컨테이너 가상 레지스트리를 참조하세요.

Note

클라우드 제공업체 레지스트리는 지원되지 않지만 이슈 20919에서 이 동작을 변경하도록 제안하고 있습니다.

가상 레지스트리 관리#

다음 엔드포인트를 사용하여 컨테이너 레지스트리를 위한 가상 레지스트리를 생성·관리합니다.

모든 가상 레지스트리 목록 조회#

그룹의 모든 컨테이너 가상 레지스트리를 나열합니다.

GET /groups/:id/-/virtual_registries/container/registries

지원되는 속성:

속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/registries"

응답 예시:

[
  {
    "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"
  }
]

가상 레지스트리 생성#

그룹의 컨테이너 가상 레지스트리를 생성합니다.

POST /groups/:id/-/virtual_registries/container/registries
속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.
name string Yes 가상 레지스트리의 이름.
description string No 가상 레지스트리의 설명.
Note

그룹당 최대 5개의 가상 레지스트리를 생성할 수 있습니다.

요청 예시:

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"

응답 예시:

{
  "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"
}

가상 레지스트리 조회#

지정된 컨테이너 가상 레지스트리를 조회합니다.

GET /virtual_registries/container/registries/:id

파라미터:

속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1"

응답 예시:

{
  "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
    }
  ]
}

가상 레지스트리 업데이트#

지정된 컨테이너 가상 레지스트리를 업데이트합니다.

PATCH /virtual_registries/container/registries/:id
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.
description string No 가상 레지스트리의 설명.
name string No 가상 레지스트리의 이름.
Note

요청에 선택적 파라미터(name 또는 description) 중 하나 이상을 제공해야 합니다.

요청 예시:

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"

성공하면 200 OK 상태 코드를 반환합니다.

가상 레지스트리 삭제#

Warning

가상 레지스트리를 삭제하면 다른 가상 레지스트리와 공유되지 않는 모든 관련 업스트림 레지스트리와 캐시된 컨테이너 이미지 및 매니페스트도 삭제됩니다.

지정된 컨테이너 가상 레지스트리를 삭제합니다.

DELETE /virtual_registries/container/registries/:id
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

가상 레지스트리의 캐시 항목 삭제#

히스토리

컨테이너 가상 레지스트리의 모든 전용 업스트림 레지스트리에서 모든 캐시 항목을 삭제하도록 예약합니다. 다른 가상 레지스트리와 연결된 업스트림 레지스트리의 캐시 항목은 삭제 예약되지 않습니다.

DELETE /virtual_registries/container/registries/:id/cache
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

업스트림 레지스트리 관리#

다음 엔드포인트를 사용하여 업스트림 컨테이너 레지스트리를 구성·관리합니다.

최상위 그룹의 모든 업스트림 레지스트리 목록 조회#

최상위 그룹의 모든 업스트림 컨테이너 레지스트리를 나열합니다.

GET /groups/:id/-/virtual_registries/container/upstreams

지원되는 속성:

속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.
page integer No 페이지 번호. 기본값: 1.
per_page integer No 페이지당 항목 수. 기본값: 20.
upstream_name string No 이름으로 퍼지 검색 필터링을 위한 업스트림 레지스트리 이름.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/upstreams"

응답 예시:

[
  {
    "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"
  }
]

업스트림 레지스트리 생성 전 연결 테스트#

히스토리

가상 레지스트리에 아직 추가되지 않은 컨테이너 업스트림 레지스트리와의 연결을 테스트합니다. 이 엔드포인트는 업스트림 레지스트리를 생성하기 전에 연결 및 자격 증명을 검증합니다.

POST /groups/:id/-/virtual_registries/container/upstreams/test

지원되는 속성:

속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.
url string Yes 업스트림 레지스트리의 URL.
password string No 업스트림 레지스트리의 비밀번호.
username string No 업스트림 레지스트리의 사용자 이름.
Note

요청에 usernamepassword를 모두 포함하거나, 둘 다 포함하지 않아야 합니다. 설정하지 않으면 업스트림에 접근할 때 공개(익명) 요청이 사용됩니다.

테스트 워크플로우#

test 엔드포인트는 제공된 업스트림 URL로 테스트 경로를 사용하여 HEAD 요청을 보내 연결 및 인증을 검증합니다. HEAD 요청으로 받은 응답은 다음과 같이 해석됩니다:

업스트림 응답 설명 결과
2XX 성공. 업스트림 접근 가능 { "success": true }
404 성공. 업스트림 접근 가능하지만 테스트 아티팩트 없음 { "success": true }
401 인증 실패 { "success": false, "result": "Error: 401 - Unauthorized" }
403 액세스 금지 { "success": false, "result": "Error: 403 - Forbidden" }
5XX 업스트림 서버 오류 { "success": false, "result": "Error: 5XX - Server Error" }
네트워크 오류 연결/시간 초과 문제 { "success": false, "result": "Error: Connection timeout" }

요청 예시:

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>"}' \

응답 예시:

{
  "success": true
}
Note

업스트림 레지스트리로부터의 2XX(발견됨) 및 404 Not Found HTTP 상태 코드 모두 업스트림이 연결 가능하고 올바르게 구성되었음을 나타내는 성공적인 응답으로 간주됩니다.

가상 레지스트리의 모든 업스트림 레지스트리 목록 조회#

컨테이너 가상 레지스트리의 모든 업스트림 레지스트리를 나열합니다.

GET /virtual_registries/container/registries/:id/upstreams

지원되는 속성:

속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1/upstreams"

응답 예시:

[
  {
    "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
    }
  }
]

업스트림 레지스트리 생성#

지정된 컨테이너 가상 레지스트리의 업스트림 컨테이너 레지스트리를 생성합니다.

POST /virtual_registries/container/registries/:id/upstreams
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.
url string Yes 업스트림 컨테이너 레지스트리의 URL.
name string Yes 업스트림 레지스트리의 이름.
cache_validity_hours integer No 컨테이너 이미지의 캐시 유효 기간. 기본값: 24시간.
description string No 업스트림 레지스트리의 설명.
password string No 업스트림 레지스트리의 비밀번호.
username string No 업스트림 레지스트리의 사용자 이름.
Note

요청에 usernamepassword를 모두 포함하거나, 둘 다 포함하지 않아야 합니다. 설정하지 않으면 업스트림에 접근할 때 공개(익명) 요청이 사용됩니다.

동일한 최상위 그룹에 동일한 URL과 자격 증명(usernamepassword)을 가진 두 업스트림을 추가할 수 없습니다. 대신 다음 중 하나를 수행할 수 있습니다:

  • 동일한 URL을 가진 각 업스트림에 서로 다른 자격 증명을 설정합니다.
  • 업스트림을 여러 가상 레지스트리에 연결합니다.
Note

각 가상 레지스트리에 최대 5개의 업스트림 레지스트리를 추가할 수 있습니다.

요청 예시:

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"

응답 예시:

{
  "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
  }
}

업스트림 레지스트리 조회#

지정된 업스트림 컨테이너 레지스트리를 조회합니다.

GET /virtual_registries/container/upstreams/:id

파라미터:

속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1"

응답 예시:

{
  "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
    }
  ]
}

업스트림 레지스트리 업데이트#

지정된 업스트림 컨테이너 레지스트리를 업데이트합니다.

PATCH /virtual_registries/container/upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.
cache_validity_hours integer No 컨테이너 이미지의 캐시 유효 기간. 기본값: 24시간.
description string No 업스트림 레지스트리의 설명.
name string No 업스트림 레지스트리의 이름.
password string No 업스트림 레지스트리의 비밀번호.
url string No 업스트림 레지스트리의 URL.
username string No 업스트림 레지스트리의 사용자 이름.
Note

요청에 선택적 파라미터 중 하나 이상을 제공해야 합니다.

usernamepassword는 함께 제공하거나 전혀 제공하지 않아야 합니다. 설정하지 않으면 업스트림에 접근할 때 공개(익명) 요청이 사용됩니다.

요청 예시:

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"

성공하면 200 OK 상태 코드를 반환합니다.

업스트림 레지스트리 위치 업데이트#

컨테이너 가상 레지스트리의 정렬된 목록에서 업스트림 컨테이너 레지스트리의 위치를 업데이트합니다.

PATCH /virtual_registries/container/registry_upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리 연결의 ID.
position integer Yes 업스트림 레지스트리의 위치. 1에서 20 사이.

요청 예시:

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"

성공하면 200 OK 상태 코드를 반환합니다.

업스트림 레지스트리 삭제#

지정된 업스트림 컨테이너 레지스트리를 삭제합니다.

DELETE /virtual_registries/container/upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

업스트림을 레지스트리에 연결#

지정된 업스트림 컨테이너 레지스트리를 지정된 컨테이너 가상 레지스트리에 연결합니다.

POST /virtual_registries/container/registry_upstreams
속성 유형 필수 설명
registry_id integer Yes 컨테이너 가상 레지스트리의 ID.
upstream_id integer Yes 컨테이너 업스트림 레지스트리의 ID.
Note

각 가상 레지스트리에 최대 5개의 업스트림 레지스트리를 연결할 수 있습니다.

요청 예시:

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"

응답 예시:

{
  "id": 5,
  "registry_id": 1,
  "upstream_id": 2,
  "position": 2
}

레지스트리에서 업스트림 연결 해제#

지정된 업스트림 컨테이너 레지스트리와 지정된 컨테이너 가상 레지스트리 간의 연결을 제거합니다.

DELETE /virtual_registries/container/registry_upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리 연결의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

업스트림 레지스트리의 캐시 항목 삭제#

히스토리

지정된 업스트림 레지스트리의 모든 캐시 항목을 삭제하도록 예약합니다.

DELETE /virtual_registries/container/upstreams/:id/cache
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

재정의 파라미터로 업스트림 레지스트리 연결 테스트#

히스토리

선택적 파라미터 재정의와 함께 기존 컨테이너 업스트림 레지스트리와의 연결을 테스트합니다.

이 방법으로 업스트림 레지스트리 구성을 업데이트하기 전에 URL, 사용자 이름 또는 비밀번호 변경 사항을 테스트할 수 있습니다.

POST /virtual_registries/container/upstreams/:id/test

지원되는 속성:

속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.
password string No 테스트를 위한 재정의 비밀번호.
url string No 테스트를 위한 재정의 URL. 제공된 경우 업스트림의 구성된 URL 대신 이 URL로 연결을 테스트합니다.
username string No 테스트를 위한 재정의 사용자 이름.

테스트 작동 방식#

이 엔드포인트는 연결 및 인증을 검증하기 위해 테스트 경로를 사용하여 업스트림 URL로 HEAD 요청을 수행합니다. 업스트림에 캐시된 아티팩트가 있는 경우 테스트에 업스트림의 상대 경로가 사용됩니다. 그렇지 않으면 자리 표시자 경로가 사용됩니다.

테스트 동작은 제공된 파라미터에 따라 달라집니다:

  • 파라미터 없음: 현재 구성으로 업스트림 테스트 (기존 URL, 사용자 이름, 비밀번호)
  • URL 재정의: 새 URL로의 연결 테스트 (사용자 이름과 비밀번호는 함께 제공하거나 전혀 제공하지 않아야 함)
  • 자격 증명 재정의: 새 자격 증명으로 기존 URL 테스트

HEAD 요청으로 받은 응답은 다음과 같이 해석됩니다:

업스트림 응답 의미 결과
2XX 성공. 업스트림 접근 가능 { "success": true }
404 성공. 업스트림 접근 가능하지만 테스트 아티팩트 없음 { "success": true }
401 인증 실패 { "success": false, "result": "Error: 401 - Unauthorized" }
403 액세스 금지 { "success": false, "result": "Error: 403 - Forbidden" }
5XX 업스트림 서버 오류 { "success": false, "result": "Error: 5XX - Server Error" }
네트워크 오류 연결 또는 시간 초과 문제 { "success": false, "result": "Error: Connection timeout" }
Note

2XX(발견됨) 및 404 Not Found 응답 모두 업스트림 레지스트리에 대한 성공적인 연결 및 인증을 나타냅니다. 테스트는 특정 아티팩트가 존재하는지 검증하지 않습니다.

요청 예시 (기존 구성 테스트):

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"

요청 예시 (자격 증명 없이 URL 재정의로 테스트):

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"

요청 예시 (URL 및 자격 증명 재정의로 테스트):

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"

요청 예시 (자격 증명 재정의로 테스트):

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"

응답 예시:

{
  "success": true
}

캐시 항목 관리#

다음 엔드포인트를 사용하여 컨테이너 가상 레지스트리의 캐시된 컨테이너 이미지와 매니페스트를 관리합니다.

업스트림 레지스트리 캐시 항목 목록 조회#

컨테이너 업스트림 레지스트리의 캐시된 컨테이너 이미지와 매니페스트를 나열합니다.

GET /virtual_registries/container/upstreams/:id/cache_entries

지원되는 속성:

속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.
page integer No 페이지 번호. 기본값: 1.
per_page integer No 페이지당 항목 수. 기본값: 20.
search string No 컨테이너 이미지의 상대 경로로 검색 쿼리 (예: library/nginx).

요청 예시:

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"

응답 예시:

[
  {
    "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"
  }
]

업스트림 레지스트리 캐시 항목 삭제#

업스트림 레지스트리의 지정된 캐시된 컨테이너 이미지 또는 매니페스트를 삭제합니다.

DELETE /virtual_registries/container/cache_entries/*id
속성 유형 필수 설명
id string Yes 캐시 항목의 base64 인코딩된 업스트림 ID와 상대 경로인 캐시 항목 ID (예: 'bGlicmFyeS9uZ2lueC9tYW5pZmVzdHMvbGF0ZXN0').

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

컨테이너 가상 레지스트리 API

Tier: Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed
원문 보기
요약

이 엔드포인트의 사용 가능 여부는 기능 플래그로 제어됩니다. 가상 레지스트리를 통해 컨테이너 이미지를 가져오는 방법은 컨테이너 가상 레지스트리를 참조하세요. 클라우드 제공업체 레지스트리는 지원되지 않지만 이슈 20919에서 이 동작을 변경하도록 제안하고 있습니다.

히스토리
Feature flag

이 엔드포인트의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.

이 API를 사용하여:

  • 컨테이너 레지스트리를 위한 가상 레지스트리를 생성·관리합니다.
  • 업스트림 컨테이너 레지스트리를 구성합니다.
  • 캐시된 컨테이너 이미지와 매니페스트를 관리합니다.

가상 레지스트리를 통해 컨테이너 이미지를 가져오는 방법은 컨테이너 가상 레지스트리를 참조하세요.

Note

클라우드 제공업체 레지스트리는 지원되지 않지만 이슈 20919에서 이 동작을 변경하도록 제안하고 있습니다.

가상 레지스트리 관리#

다음 엔드포인트를 사용하여 컨테이너 레지스트리를 위한 가상 레지스트리를 생성·관리합니다.

모든 가상 레지스트리 목록 조회#

그룹의 모든 컨테이너 가상 레지스트리를 나열합니다.

GET /groups/:id/-/virtual_registries/container/registries

지원되는 속성:

속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/registries"

응답 예시:

[
  {
    "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"
  }
]

가상 레지스트리 생성#

그룹의 컨테이너 가상 레지스트리를 생성합니다.

POST /groups/:id/-/virtual_registries/container/registries
속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.
name string Yes 가상 레지스트리의 이름.
description string No 가상 레지스트리의 설명.
Note

그룹당 최대 5개의 가상 레지스트리를 생성할 수 있습니다.

요청 예시:

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"

응답 예시:

{
  "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"
}

가상 레지스트리 조회#

지정된 컨테이너 가상 레지스트리를 조회합니다.

GET /virtual_registries/container/registries/:id

파라미터:

속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1"

응답 예시:

{
  "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
    }
  ]
}

가상 레지스트리 업데이트#

지정된 컨테이너 가상 레지스트리를 업데이트합니다.

PATCH /virtual_registries/container/registries/:id
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.
description string No 가상 레지스트리의 설명.
name string No 가상 레지스트리의 이름.
Note

요청에 선택적 파라미터(name 또는 description) 중 하나 이상을 제공해야 합니다.

요청 예시:

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"

성공하면 200 OK 상태 코드를 반환합니다.

가상 레지스트리 삭제#

Warning

가상 레지스트리를 삭제하면 다른 가상 레지스트리와 공유되지 않는 모든 관련 업스트림 레지스트리와 캐시된 컨테이너 이미지 및 매니페스트도 삭제됩니다.

지정된 컨테이너 가상 레지스트리를 삭제합니다.

DELETE /virtual_registries/container/registries/:id
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

가상 레지스트리의 캐시 항목 삭제#

히스토리

컨테이너 가상 레지스트리의 모든 전용 업스트림 레지스트리에서 모든 캐시 항목을 삭제하도록 예약합니다. 다른 가상 레지스트리와 연결된 업스트림 레지스트리의 캐시 항목은 삭제 예약되지 않습니다.

DELETE /virtual_registries/container/registries/:id/cache
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

업스트림 레지스트리 관리#

다음 엔드포인트를 사용하여 업스트림 컨테이너 레지스트리를 구성·관리합니다.

최상위 그룹의 모든 업스트림 레지스트리 목록 조회#

최상위 그룹의 모든 업스트림 컨테이너 레지스트리를 나열합니다.

GET /groups/:id/-/virtual_registries/container/upstreams

지원되는 속성:

속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.
page integer No 페이지 번호. 기본값: 1.
per_page integer No 페이지당 항목 수. 기본값: 20.
upstream_name string No 이름으로 퍼지 검색 필터링을 위한 업스트림 레지스트리 이름.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/container/upstreams"

응답 예시:

[
  {
    "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"
  }
]

업스트림 레지스트리 생성 전 연결 테스트#

히스토리

가상 레지스트리에 아직 추가되지 않은 컨테이너 업스트림 레지스트리와의 연결을 테스트합니다. 이 엔드포인트는 업스트림 레지스트리를 생성하기 전에 연결 및 자격 증명을 검증합니다.

POST /groups/:id/-/virtual_registries/container/upstreams/test

지원되는 속성:

속성 유형 필수 설명
id string or integer Yes 그룹 ID 또는 전체 그룹 경로. 최상위 그룹이어야 합니다.
url string Yes 업스트림 레지스트리의 URL.
password string No 업스트림 레지스트리의 비밀번호.
username string No 업스트림 레지스트리의 사용자 이름.
Note

요청에 usernamepassword를 모두 포함하거나, 둘 다 포함하지 않아야 합니다. 설정하지 않으면 업스트림에 접근할 때 공개(익명) 요청이 사용됩니다.

테스트 워크플로우#

test 엔드포인트는 제공된 업스트림 URL로 테스트 경로를 사용하여 HEAD 요청을 보내 연결 및 인증을 검증합니다. HEAD 요청으로 받은 응답은 다음과 같이 해석됩니다:

업스트림 응답 설명 결과
2XX 성공. 업스트림 접근 가능 { "success": true }
404 성공. 업스트림 접근 가능하지만 테스트 아티팩트 없음 { "success": true }
401 인증 실패 { "success": false, "result": "Error: 401 - Unauthorized" }
403 액세스 금지 { "success": false, "result": "Error: 403 - Forbidden" }
5XX 업스트림 서버 오류 { "success": false, "result": "Error: 5XX - Server Error" }
네트워크 오류 연결/시간 초과 문제 { "success": false, "result": "Error: Connection timeout" }

요청 예시:

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>"}' \

응답 예시:

{
  "success": true
}
Note

업스트림 레지스트리로부터의 2XX(발견됨) 및 404 Not Found HTTP 상태 코드 모두 업스트림이 연결 가능하고 올바르게 구성되었음을 나타내는 성공적인 응답으로 간주됩니다.

가상 레지스트리의 모든 업스트림 레지스트리 목록 조회#

컨테이너 가상 레지스트리의 모든 업스트림 레지스트리를 나열합니다.

GET /virtual_registries/container/registries/:id/upstreams

지원되는 속성:

속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/container/registries/1/upstreams"

응답 예시:

[
  {
    "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
    }
  }
]

업스트림 레지스트리 생성#

지정된 컨테이너 가상 레지스트리의 업스트림 컨테이너 레지스트리를 생성합니다.

POST /virtual_registries/container/registries/:id/upstreams
속성 유형 필수 설명
id integer Yes 컨테이너 가상 레지스트리의 ID.
url string Yes 업스트림 컨테이너 레지스트리의 URL.
name string Yes 업스트림 레지스트리의 이름.
cache_validity_hours integer No 컨테이너 이미지의 캐시 유효 기간. 기본값: 24시간.
description string No 업스트림 레지스트리의 설명.
password string No 업스트림 레지스트리의 비밀번호.
username string No 업스트림 레지스트리의 사용자 이름.
Note

요청에 usernamepassword를 모두 포함하거나, 둘 다 포함하지 않아야 합니다. 설정하지 않으면 업스트림에 접근할 때 공개(익명) 요청이 사용됩니다.

동일한 최상위 그룹에 동일한 URL과 자격 증명(usernamepassword)을 가진 두 업스트림을 추가할 수 없습니다. 대신 다음 중 하나를 수행할 수 있습니다:

  • 동일한 URL을 가진 각 업스트림에 서로 다른 자격 증명을 설정합니다.
  • 업스트림을 여러 가상 레지스트리에 연결합니다.
Note

각 가상 레지스트리에 최대 5개의 업스트림 레지스트리를 추가할 수 있습니다.

요청 예시:

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"

응답 예시:

{
  "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
  }
}

업스트림 레지스트리 조회#

지정된 업스트림 컨테이너 레지스트리를 조회합니다.

GET /virtual_registries/container/upstreams/:id

파라미터:

속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/container/upstreams/1"

응답 예시:

{
  "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
    }
  ]
}

업스트림 레지스트리 업데이트#

지정된 업스트림 컨테이너 레지스트리를 업데이트합니다.

PATCH /virtual_registries/container/upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.
cache_validity_hours integer No 컨테이너 이미지의 캐시 유효 기간. 기본값: 24시간.
description string No 업스트림 레지스트리의 설명.
name string No 업스트림 레지스트리의 이름.
password string No 업스트림 레지스트리의 비밀번호.
url string No 업스트림 레지스트리의 URL.
username string No 업스트림 레지스트리의 사용자 이름.
Note

요청에 선택적 파라미터 중 하나 이상을 제공해야 합니다.

usernamepassword는 함께 제공하거나 전혀 제공하지 않아야 합니다. 설정하지 않으면 업스트림에 접근할 때 공개(익명) 요청이 사용됩니다.

요청 예시:

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"

성공하면 200 OK 상태 코드를 반환합니다.

업스트림 레지스트리 위치 업데이트#

컨테이너 가상 레지스트리의 정렬된 목록에서 업스트림 컨테이너 레지스트리의 위치를 업데이트합니다.

PATCH /virtual_registries/container/registry_upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리 연결의 ID.
position integer Yes 업스트림 레지스트리의 위치. 1에서 20 사이.

요청 예시:

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"

성공하면 200 OK 상태 코드를 반환합니다.

업스트림 레지스트리 삭제#

지정된 업스트림 컨테이너 레지스트리를 삭제합니다.

DELETE /virtual_registries/container/upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

업스트림을 레지스트리에 연결#

지정된 업스트림 컨테이너 레지스트리를 지정된 컨테이너 가상 레지스트리에 연결합니다.

POST /virtual_registries/container/registry_upstreams
속성 유형 필수 설명
registry_id integer Yes 컨테이너 가상 레지스트리의 ID.
upstream_id integer Yes 컨테이너 업스트림 레지스트리의 ID.
Note

각 가상 레지스트리에 최대 5개의 업스트림 레지스트리를 연결할 수 있습니다.

요청 예시:

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"

응답 예시:

{
  "id": 5,
  "registry_id": 1,
  "upstream_id": 2,
  "position": 2
}

레지스트리에서 업스트림 연결 해제#

지정된 업스트림 컨테이너 레지스트리와 지정된 컨테이너 가상 레지스트리 간의 연결을 제거합니다.

DELETE /virtual_registries/container/registry_upstreams/:id
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리 연결의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

업스트림 레지스트리의 캐시 항목 삭제#

히스토리

지정된 업스트림 레지스트리의 모든 캐시 항목을 삭제하도록 예약합니다.

DELETE /virtual_registries/container/upstreams/:id/cache
속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.

재정의 파라미터로 업스트림 레지스트리 연결 테스트#

히스토리

선택적 파라미터 재정의와 함께 기존 컨테이너 업스트림 레지스트리와의 연결을 테스트합니다.

이 방법으로 업스트림 레지스트리 구성을 업데이트하기 전에 URL, 사용자 이름 또는 비밀번호 변경 사항을 테스트할 수 있습니다.

POST /virtual_registries/container/upstreams/:id/test

지원되는 속성:

속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.
password string No 테스트를 위한 재정의 비밀번호.
url string No 테스트를 위한 재정의 URL. 제공된 경우 업스트림의 구성된 URL 대신 이 URL로 연결을 테스트합니다.
username string No 테스트를 위한 재정의 사용자 이름.

테스트 작동 방식#

이 엔드포인트는 연결 및 인증을 검증하기 위해 테스트 경로를 사용하여 업스트림 URL로 HEAD 요청을 수행합니다. 업스트림에 캐시된 아티팩트가 있는 경우 테스트에 업스트림의 상대 경로가 사용됩니다. 그렇지 않으면 자리 표시자 경로가 사용됩니다.

테스트 동작은 제공된 파라미터에 따라 달라집니다:

  • 파라미터 없음: 현재 구성으로 업스트림 테스트 (기존 URL, 사용자 이름, 비밀번호)
  • URL 재정의: 새 URL로의 연결 테스트 (사용자 이름과 비밀번호는 함께 제공하거나 전혀 제공하지 않아야 함)
  • 자격 증명 재정의: 새 자격 증명으로 기존 URL 테스트

HEAD 요청으로 받은 응답은 다음과 같이 해석됩니다:

업스트림 응답 의미 결과
2XX 성공. 업스트림 접근 가능 { "success": true }
404 성공. 업스트림 접근 가능하지만 테스트 아티팩트 없음 { "success": true }
401 인증 실패 { "success": false, "result": "Error: 401 - Unauthorized" }
403 액세스 금지 { "success": false, "result": "Error: 403 - Forbidden" }
5XX 업스트림 서버 오류 { "success": false, "result": "Error: 5XX - Server Error" }
네트워크 오류 연결 또는 시간 초과 문제 { "success": false, "result": "Error: Connection timeout" }
Note

2XX(발견됨) 및 404 Not Found 응답 모두 업스트림 레지스트리에 대한 성공적인 연결 및 인증을 나타냅니다. 테스트는 특정 아티팩트가 존재하는지 검증하지 않습니다.

요청 예시 (기존 구성 테스트):

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"

요청 예시 (자격 증명 없이 URL 재정의로 테스트):

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"

요청 예시 (URL 및 자격 증명 재정의로 테스트):

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"

요청 예시 (자격 증명 재정의로 테스트):

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"

응답 예시:

{
  "success": true
}

캐시 항목 관리#

다음 엔드포인트를 사용하여 컨테이너 가상 레지스트리의 캐시된 컨테이너 이미지와 매니페스트를 관리합니다.

업스트림 레지스트리 캐시 항목 목록 조회#

컨테이너 업스트림 레지스트리의 캐시된 컨테이너 이미지와 매니페스트를 나열합니다.

GET /virtual_registries/container/upstreams/:id/cache_entries

지원되는 속성:

속성 유형 필수 설명
id integer Yes 업스트림 레지스트리의 ID.
page integer No 페이지 번호. 기본값: 1.
per_page integer No 페이지당 항목 수. 기본값: 20.
search string No 컨테이너 이미지의 상대 경로로 검색 쿼리 (예: library/nginx).

요청 예시:

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"

응답 예시:

[
  {
    "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"
  }
]

업스트림 레지스트리 캐시 항목 삭제#

업스트림 레지스트리의 지정된 캐시된 컨테이너 이미지 또는 매니페스트를 삭제합니다.

DELETE /virtual_registries/container/cache_entries/*id
속성 유형 필수 설명
id string Yes 캐시 항목의 base64 인코딩된 업스트림 ID와 상대 경로인 캐시 항목 ID (예: 'bGlicmFyeS9uZ2lueC9tYW5pZmVzdHMvbGF0ZXN0').

요청 예시:

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"

성공하면 204 No Content 상태 코드를 반환합니다.