[docker] Docker 레지스트리와 저장소의 차이점
도커 레지스트리와 리포지토리의 차이점에 대해 혼란 스럽습니다. Docker 문서는 두 단어를 상호 교환 적으로 사용하는 것처럼 보입니다. 또한 리포지토리는 때때로 문서에서 다음과 같은 이미지라고도합니다.
저장소를 레지스트리로 푸시하려면 여기에 표시된대로 이미지 이름을 지정하거나 컨테이너를 이름 지정된 이미지로 커밋해야합니다.
이제이 저장소를 이름 또는 태그로 지정된 레지스트리로 푸시 할 수 있습니다.
저장소를 레지스트리에 어떻게 푸시 할 수 있습니까? 이미지를 저장소로 푸시하지 않습니까?
답변
도커 레지스트리는 도커 이미지를 저장하는 서비스입니다.
Docker Registry는 다음 레지스트리 중 하나와 같이 공개 또는 개인 레지스트리로 타사에서 호스팅 할 수 있습니다.
또는 도커 레지스트리를 직접 호스팅 할 수 있습니다
( 자세한 내용 은 https://docs.docker.com/ee/dtr/ 참조).
Docker 저장소는 이름이 같고 태그가 다른 여러 docker 이미지 모음입니다. 태그는 리포지토리 내 이미지의 영숫자 식별자입니다.
예를 들어 https://hub.docker.com/r/library/python/tags/ 를 참조 하십시오 . 공식 파이썬 이미지에는 여러 가지 태그가 있으며,이 태그는 모두 Docker Hub에있는 공식 파이썬 저장소의 멤버입니다. Docker Hub는 Docker가 호스팅하는 Docker Registry입니다.
더 많은 것을 읽으려면 :
답변
Docker 사용, 컨테이너를 사용하여 소프트웨어 개발 및 배포 책에서
레지스트리, 리포지토리, 이미지 및 태그
이미지를 저장하기위한 계층 적 시스템이 있습니다. 다음과 같은 용어가 사용됩니다.
기재
이미지 호스팅 및 배포를 담당하는 서비스입니다. 기본 레지스트리는 Docker Hub입니다.
저장소
관련 이미지 모음 (일반적으로 동일한 응용 프로그램 또는 서비스의 다른 버전을 제공)
꼬리표
저장소 내의 이미지에 첨부 된 영숫자 식별자 (예 : 14.04 또는 안정).
따라서 명령 docker pull amouat/revealjs:latest
은 amouat/revealjs
Docker Hub 레지스트리에서 저장소 내에서 최신 태그가 지정된 이미지를 다운로드합니다 .
답변
정보 보완 :
- 일반적으로 저장소를 레지스트리 (및 그 일부인 모든 이미지)로 푸시합니다. 그러나 단일 이미지를 레지스트리로 푸시 할 수 있습니다. 모든 경우에을 사용
docker push
합니다. - 이미지는 12 자리 숫자 이미지 ID를 갖지만 다음과 같이 식별됩니다.
namespace/repo-name:tag
- 이미지 전체 이름은 레지스트리 호스트 이름 및 포트로 선택적으로 접 두부로 지정할 수 있습니다.
myregistryhost:5000/namespace/repo-name:tag
- 일반적인 명명 규칙은 레지스트리 사용자 이름을 내가 “네임 스페이스”라고하는 이름으로 사용하는 것입니다.
답변
고정 표시기 저장소의 귀여운 조합 registry
및 image
.
docker tag foo <registry>/<image>:<tag>
와 같다
docker tag foo <repository>:<tag>
답변
Docker Registry는 직접 호스팅하거나 (신뢰할 수있는 개인용) Docker 허브를이 서비스의 호스트로 지정할 수있는 서비스입니다. 일반적으로 소프트웨어가 상용 인 경우이를 “개인 및 신뢰할 수있는”레지스트리로 호스팅합니다. Java 개발자의 경우 이는 Maven Artifactory 설정과 다소 유사합니다.
Docker Repository는 “태그 된”이미지 세트입니다. 예를 들어 5 개의 ubuntu:latest
이미지를 태그했을 수 있습니다 .
a) 나노 편집기 (image1_tag : v1)
b) 특정 소프트웨어 1 (image1_tag : v2)
c) Sudo (image1_tag : v3)
d) 아파치 http 데몬 (image1_tag : v4)
e) 바람둥이 (image1_tag : v5)
docker push
명령을 사용 하여 위의 각 이미지를 리포지토리에 푸시 할 수 있습니다 . 리포지토리 이름이 일치하는 한 성공적으로 푸시되고 선택한 리포지토리 아래에 올바르게 태그가 표시됩니다.
이제 귀하의 질문은 “이 저장소는 어디에서 호스팅되고 / 누가 서비스를 관리하고 있습니까?”입니다. Docker Registry가 등장합니다. 기본적으로 개인 / 공용 저장소를 유지하는 데 사용할 수있는 도커 허브 레지스트리 (오픈 소스)가 제공됩니다. 따라서 수정하지 않으면 이미지가 docker hub의 개인 저장소로 푸시됩니다. 이미지 태그를 푸시 할 때의 출력 예는 다음과 같습니다.
docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
bf41e934d39d: Pushed
70d93396f87f: Pushed
6ec525dfd060: Pushed
705419d10b13: Pushed
a4aaef726d02: Pushed
04964fddc946: Pushed
latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
docker@my-docker-vm:/$
그리고 즉시 입력 docker images --digests -a
하면 푸시 된 이미지 태그가 docker hub 레지스트리에서 관리하는 개인 저장소에 대해 새 서명을 표시하고 있음을 확인할 수 있습니다.
답변
Docker Hub 및 기타 타사 저장소 호스팅 서비스를 “레지스트리”라고합니다. 레지스트리는 리포지토리 모음을 저장합니다.
레지스트리에는 많은 저장소가있을 수 있으며 저장소에는 태그를 사용하여 개별적으로 버전이 지정된 동일한 이미지의 여러 버전이있을 수 있습니다.