태그 보관물: docker-registry

docker-registry

docker registry v2에서 이미지 목록을 얻는 방법

docker registry v1을 사용하고 있으며 최신 버전 인 v2로 마이그레이션하는 데 관심이 있습니다. 그러나 레지스트리에 이미지 목록을 표시하는 방법이 필요합니다. 예를 들어 레지스트리 v1을 사용하면 GET 요청을 실행할 수 http://myregistry:5000/v1/search?있으며 결과는 다음과 같습니다.

{
  "num_results": 2,
  "query": "",
  "results": [
    {
      "description": "",
      "name": "deis/router"
    },
    {
      "description": "",
      "name": "deis/database"
    }
  ]
}

그러나 공식 문서 에서 레지스트리의 이미지 목록을 얻는 것과 비슷한 것을 찾을 수 없습니다 . 새 버전 v2에서 수행하는 방법을 아는 사람이 있습니까?



답변

최신 버전 (2015-07-31 기준)의 레지스트리 V2의 경우 DockerHub 에서이 이미지 를 얻을 수 있습니다 .

docker pull distribution/registry:master

모든 저장소 (효과적으로 이미지)를 나열하십시오.

curl -X GET https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}

저장소의 모든 태그를 나열하십시오.

curl -X GET https://myregistry:5000/v2/ubuntu/tags/list
> {"name":"ubuntu","tags":["14.04"]}


답변

당신은 검색 할 수 있습니다

http : // <ip/hostname>: <port>/ v2 / _catalog


답변

카탈로그 받기

기본적으로 레지스트리 API는 카탈로그의 100 항목을 반환하며 코드는 다음과 같습니다.

레지스트리 API를 말릴 때 :

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

그것은 다음과 같습니다.

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100

이것은 페이지 매김 방법입니다.

항목의 합이 100을 초과하면 두 가지 방법으로 수행 할 수 있습니다.

첫째 : 더 큰 숫자를 줘

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000

Sencond : 다음 링커 URL 구문 분석

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

응답 헤더에 포함 된 링크 요소 :

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

응답 헤더 :

Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"

링크 요소에는이 요청의 마지막 항목이 있으며 다음 ‘페이지’를 요청할 수 있습니다.

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws

응답 헤더에 링크 요소 가 포함 된 경우 루프 에서 수행 할 수 있습니다 .

이미지 받기

카탈로그 결과를 얻으면 다음과 같습니다.

{
"repositories": [
"busybox",
"ceph/mds"
]
}

모든 카탈로그에서 이미지를 얻을 수 있습니다.

curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list

보고:

{"name":"busybox","tags":["latest"]}


답변

https://github.com/docker/distribution 에서 사용 가능한 최신 버전의 Docker Registry 는 카탈로그 API를 지원합니다. (v2 / _catalog). 이를 통해 리포지토리를 검색 할 수 있습니다.

관심이 있으시면 새로운 Docker Registry 배포 ( https://github.com/vivekjuneja/docker_registry_cli ) 의 검색 기능 을 쉽게 사용할 수 있도록 구축 한 docker image registry CLI를 사용해 볼 수 있습니다


답변

이를 위해 CLI 도구를 작성했습니다. docker-ls docker 레지스트리를 탐색하고 토큰 또는 기본 인증을 통한 인증을 지원합니다.


답변

이것은 나를 미치게 만들었지 만 마침내 모든 조각을 모았습니다. 2015 년 1 월 5 일 현재 docker V2 레지스트리에 이미지를 나열 할 수 있음을 확인했습니다 (위의 @jonatan과 동일).

내가 그 대답을했다면 나는 그 대답을지지 할 것이다.

대신 대답을 확장하겠습니다. 레지스트리 V2는 보안을 염두에두고 제작되어 있기 때문에, 나는 그것을하는 방법을 포함하는 것이 적절하다고 생각 자체 서명 인증서로 설정 하고, 그 인증서와 컨테이너를 실행 HTTPS를 호출하는 인증서로 만들어 질 수 있다는 것을 위해 :

이것은 실제로 레지스트리를 시작하는 데 사용하는 스크립트입니다.

sudo docker stop registry
sudo docker rm -v registry
sudo docker run -d \
  -p 5001:5001 \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /data/registry:/var/lib/registry \
  -v /root/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  -e REGISTRY_HTTP_DEBUG_ADDR=':5001' \
  registry:2.2.1

이것은 일부에게는 분명 할 수 있지만 항상 키와 인증서가 섞여 있습니다. @jonaton을 호출하기 위해 참조해야하는 파일은 위에 언급 된 **입니다. (domain.crt을 넣었으므로 /root액세스 할 수있는 사용자 디렉토리에 사본을 작성했습니다.)

curl --cacert ~/domain.crt https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}

** 위 명령이 변경되었습니다. -X GET을 시도해도 실제로 작동하지 않았습니다.

참고 : https://myregistry:5000(위와 같이) 생성 된 인증서에 제공된 도메인과 일치해야합니다.


답변

registry : 2.1.1 이상을 설치하고 ( 여기서 마지막을 확인할 수 있음 ) GET / v2 / _catalog를 사용하여 목록을 가져 오십시오.

https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories

쉘 스크립트 예제로 모든 이미지 나열 :
https://gist.github.com/OndrejP/a2386d08e5308b0776c0