source

도커 레지스트리와 리포지토리의 차이점

factcode 2023. 8. 7. 23:10
반응형

도커 레지스트리와 리포지토리의 차이점

도커 레지스트리와 리포지토리의 차이에 대해 혼란스럽습니다.Docker 설명서는 두 단어를 서로 바꾸어 사용하는 것 같습니다.또한 리포지토리는 때때로 문서에서 다음과 같이 이미지라고 합니다.

리포지토리를 레지스트리에 푸시하려면 이미지 이름을 지정하거나 여기서 본 것처럼 컨테이너를 명명된 이미지에 커밋해야 합니다.

이제 이 리포지토리를 이름 또는 태그로 지정된 레지스트리로 푸시할 수 있습니다.

레지스트리에 리포지토리를 푸시하려면 어떻게 해야 합니까?이미지를 저장소에 푸시하는 것이 아닙니까?

도커 레지스트리는 도커 이미지를 저장하는 서비스입니다.

도커 레지스트리는 다음 레지스트리 중 하나와 같이 공용 또는 개인 레지스트리로서 제3자에 의해 호스팅될 수 있습니다.

수 .
(자세한 내용은 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/revealjsDocker 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

반응형