도커 레지스트리와 리포지토리의 차이점
도커 레지스트리와 리포지토리의 차이에 대해 혼란스럽습니다.Docker 설명서는 두 단어를 서로 바꾸어 사용하는 것 같습니다.또한 리포지토리는 때때로 문서에서 다음과 같이 이미지라고 합니다.
리포지토리를 레지스트리에 푸시하려면 이미지 이름을 지정하거나 여기서 본 것처럼 컨테이너를 명명된 이미지에 커밋해야 합니다.
이제 이 리포지토리를 이름 또는 태그로 지정된 레지스트리로 푸시할 수 있습니다.
레지스트리에 리포지토리를 푸시하려면 어떻게 해야 합니까?이미지를 저장소에 푸시하는 것이 아닙니까?
도커 레지스트리는 도커 이미지를 저장하는 서비스입니다.
도커 레지스트리는 다음 레지스트리 중 하나와 같이 공용 또는 개인 레지스트리로서 제3자에 의해 호스팅될 수 있습니다.
- 도커 허브,
- 부두.
- Google 컨테이너 레지스트리,
- AWS 컨테이너 레지스트리
수 .
(자세한 내용은 https://docs.docker.com/ee/dtr/ 참조).
도커 리포지토리는 이름이 같고 태그가 다른 서로 다른 서로 다른 도커 이미지의 모음입니다.태그는 저장소 내 이미지의 영숫자 식별자입니다.
예를 들어 https://hub.docker.com/r/library/python/tags/ 을 참조하십시오.공식 python 이미지에는 다양한 태그가 있으며, 이 태그는 모두 Docker Hub의 공식 python 저장소의 멤버입니다.도커 허브는 도커가 호스팅하는 도커 레지스트리입니다.
자세한 내용은 다음을 참조하십시오.
Docker 사용, 컨테이너를 포함한 소프트웨어 개발 및 배포에 관한 책
레지스트리, 리포지토리, 이미지 및 태그
이미지를 저장하기 위한 계층적 시스템이 있습니다.다음 용어가 사용됩니다.
레지스트리
이미지 호스팅 및 배포를 담당하는 서비스입니다.기본 레지스트리는 Docker Hub입니다.
저장소
관련 이미지 모음(일반적으로 동일한 응용 프로그램 또는 서비스의 서로 다른 버전을 제공함).
태그
저장소 내 이미지에 부착된 영숫자 식별자(예: 14.04 또는 안정적).
그서명 는어령래 명령.docker pull amouat/revealjs:latest
에 있는 최신 를 다운로드합니다.amouat/revealjs
Docker Hub 레지스트리의 리포지토리.
정보 보완:
- 일반적으로 레지스트리(및 레지스트리에 포함된 모든 이미지)에 리포지토리를 푸시합니다.그러나 단일 이미지를 레지스트리에 푸시할 수 있습니다.모든 경우에 다음을 사용합니다.
docker push
. - 의 이미지 12자리이지만 과 같이할 수도 .
namespace/repo-name:tag
- 호스트 포트로 수 .
myregistryhost:5000/namespace/repo-name:tag
- 일반적인 명명 규칙은 레지스트리 사용자 이름을 "이름 공간"으로 사용하는 것입니다.
는 도커저는다귀조합다니입여운음의의 귀여운 입니다.registry
그리고.image
.
docker tag foo <registry>/<image>:<tag>
와 동일합니다.
docker tag foo <repository>:<tag>
도커 레지스트리는 사용자가 직접 호스트(신뢰 및 개인)하거나 도커 허브를 이 서비스의 호스트로 지정할 수 있는 서비스입니다.일반적으로 소프트웨어가 상용 소프트웨어인 경우 이를 "개인 및 신뢰할 수 있는" 레지스트리로 호스팅합니다.Java Developers의 경우 Maven Artificory 설정과 다소 유사합니다.
도커 리포지토리는 "태그가 지정된" 이미지 집합입니다.예를 들어 다음 중 5개를 태그했을 수 있습니다.ubuntu:latest
이미지:
나노 에디터 (image1_tag:v1)
특정 소프트웨어 1(image1_tag:v2)
스도 (image1_tag:v3)
apache http 데몬(image1_tag:v4)
tomcat (image1_tag:v5)
사용할 수 있습니다.docker push
위의 각 이미지를 리포지토리에 푸시하는 명령입니다.리포지토리 이름이 일치하는 한 해당 이름은 성공적으로 푸시되고 선택한 리포지토리 아래에 나타나고 올바르게 태그가 지정됩니다.
이제 질문은 "이 저장소는 어디에서 호스팅되고/서비스를 관리하고 있습니까?"입니다.그것이 도커 레지스트리가 실현되는 부분입니다.기본적으로 개인/공용 리포지토리를 보관하는 데 사용할 수 있는 도커 허브 레지스트리(오픈 소스)가 제공됩니다.따라서 이미지는 수정 없이 도커 허브의 개인 저장소로 푸시됩니다.이미지 태그를 푸시할 때 출력되는 예는 다음과 같습니다.
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 데몬이 Docker 이미지를 쉽게 풀하고 실행할 수 있습니다.
Docker Hub 및 기타 타사 리포지토리 호스팅 서비스를 "레지스트리"라고 합니다.레지스트리는 리포지토리 모음을 저장합니다.
레지스트리에는 많은 리포지토리가 있을 수 있고 리포지토리에는 태그로 개별적으로 버전이 지정된 동일한 이미지의 다양한 버전이 있을 수 있습니다.
이러한 혼동은 "리포지토리의 이미지에 연결된 영숫자 식별자"라는 태그의 정의로 시작됩니다.
저는 차라리 당신이 ':'와 함께 추가하는 영숫자 식별자를 지금은 태그 접미사라고 부르고 싶습니다.누군가 "latest"가 기본 태그라고 말할 때, 이런 종류의 태그 접미사를 의미합니다.
실제로 :latest' 접미사는 기술적으로 태그의 일부입니다.전체 이름이 태그입니다.다음은 모두 태그입니다(같은 이미지 참조).
myimage name myimage name : image 사용자 이름 / image name : 1.0 myrepo : image / image name : 1.0
(여기서 이미지 이름을 말하는 것은 혼동의 다른 주요 원인을 설명하기 위해서입니다.물론 그것은 저장소 이름입니다.죄송합니다.)
예:
빌드하는 동안 이미지의 이름을 지정하려면 다음을 사용합니다.docker build -t thisname ...
즉, 태그의 경우 -t(이름의 경우 -n이 아님)입니다.
해당 이미지를 레지스트리에 푸시하려면 전체 URL(레지스트리 이름으로 시작하여 태그 접미사로 끝남)을 태그로 지정해야 합니다.
docker tag thisname mylocalregistry:5000/username/repoimagething:1.0
이제 다음과 같이 말하며 이 이름으로 알려진 이미지를 푸시합니다.
docker push mylocalregistry:5000/username/repoimagething:1.0
이름을 짓는 것은 어렵습니다.아아! 저장소는 물건을 넣는 "컨테이너"가 아닙니다. (으악...) 머글은 그렇게 생각합니다.
언급URL : https://stackoverflow.com/questions/34004076/difference-between-docker-registry-and-repository
'source' 카테고리의 다른 글
ng build와 ng serve의 차이점은 무엇입니까? (0) | 2023.08.12 |
---|---|
처음 150개 행을 선택하고 다음 150개 행을 선택합니다. (0) | 2023.08.12 |
열 이름이 숫자로 시작합니까? (0) | 2023.08.07 |
각도 2 테스트:ComponentFix에서 DebugElement와 NativeElement 개체의 차이점은 무엇입니까? (0) | 2023.08.07 |
방법 수준의 스프링 프로파일? (0) | 2023.08.07 |