Docker 레지스트리와 저장소의 차이점


147

도커 레지스트리와 리포지토리의 차이점에 대해 혼란 스럽습니다. Docker 문서는 두 단어를 상호 교환 적으로 사용하는 것처럼 보입니다. 또한 리포지토리는 때때로 문서에서 다음과 같은 이미지라고도합니다.

저장소를 레지스트리로 푸시하려면 여기에 표시된대로 이미지 이름을 지정하거나 컨테이너를 이름 지정된 이미지로 커밋해야합니다.

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

저장소를 레지스트리에 어떻게 푸시 할 수 있습니까? 이미지를 저장소로 푸시하지 않습니까?


4
도커 이미지와 도커 리포지토리는 어떻습니까?
Charlie Parker

: 저장소에 대 이미지 stackoverflow.com/questions/31115098/...
wisbucky

1
아는 경우 git-Docker Registry (기본값은 hub.docker.com) => GitHub ( github.com); -도커 리포지토리 => Git 리포지토리; - 부두 노동자의 태그 => 힘내 참조 (지점 / 태그)
go2null

• 도커 레지스트리 = 힘내 서버 • 도커 저장소 = 힘내 저장소 • 도커 태그 = 힘내 태그 (다소) : 더 나은에 힘내에 도커지도
시몬 우드 사이드

답변:


171

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

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입니다.

더 많은 것을 읽으려면 :


11
Artifactory는 목록에 추가하는 것입니다;) 우리는 그것을 사용합니다
buildmaestro

2
그리고 그것은 Artifactory의 링크입니다 -jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
docker에서 저장소와 이미지의 차이점은 무엇입니까?
Charlie Parker

1
리포지토리는 태그로 표시된 여러 다른 이미지를 저장할 수 있습니다.
Nemanja Trifunovic

2
단일 이미지에 여러 개의 태그가있는 것이 왜 합리적입니까?
Charlie Parker

64

Docker 사용, 컨테이너를 사용하여 소프트웨어 개발 및 배포 책에서

레지스트리, 리포지토리, 이미지 및 태그

이미지를 저장하기위한 계층 적 시스템이 있습니다. 다음과 같은 용어가 사용됩니다.

기재

이미지 호스팅 및 배포를 담당하는 서비스입니다. 기본 레지스트리는 Docker Hub입니다.

저장소

관련 이미지 모음 (일반적으로 동일한 응용 프로그램 또는 서비스의 다른 버전을 제공)

꼬리표

저장소 내의 이미지에 첨부 된 영숫자 식별자 (예 : 14.04 또는 안정).

따라서 명령 docker pull amouat/revealjs:latestamouat/revealjsDocker Hub 레지스트리에서 저장소 내에서 최신 태그가 지정된 이미지를 다운로드합니다 .


1
하나의 이미지에 여러 개의 태그를 가질 수 있습니까?
Charlie Parker

1
@ 찰리 네. 예를 들어, 지금 ubuntu:latestubuntu:16.04같은이 Image ID가 같은 이미지 만 여러 태그입니다 의미한다.
wisbucky

이 휴식은 아래의 문서를 어디 docker pull부분을 읽습니다 : "특정 이미지를 다운로드 또는 이미지 (즉, 저장소), 사용의 설정하려면 docker pull어떤 태그가 제공되지 않으면, 부두 노동자 엔진을 사용합니다. :latest기본으로 태그를. " 그러면 어떻게 "이미지 집합 (즉, 저장소)을 다운로드"합니까? 🤔
Laird Nelson

1
임의의 정보 : 기본 레지스트리 URL은 docker.io
yosefrow

1
레지스트리를 여러 하위 리포지토리가있는 루트 인 트리와 같이 시각화 하고이 리포지토리 각각에는 images : tag가 하위로 있습니다. 이러한 각 레벨에는 특정 역할이 있습니다. 레지스트리는 호스팅 위치와 같고 저장소는 이미지 디렉토리입니다. 이해가 정확합니까?
Ultrablendz

12

정보 보완 :

  • 일반적으로 저장소를 레지스트리 (및 그 일부인 모든 이미지)로 푸시합니다. 그러나 단일 이미지를 레지스트리로 푸시 할 수 있습니다. 모든 경우에을 사용 docker push합니다.
  • 이미지는 12 자리 숫자 이미지 ID를 갖지만 다음과 같이 식별됩니다. namespace/repo-name:tag
  • 이미지 전체 이름은 레지스트리 호스트 이름 및 포트로 선택적으로 접 두부로 지정할 수 있습니다. myregistryhost:5000/namespace/repo-name:tag
  • 일반적인 명명 규칙은 레지스트리 사용자 이름을 내가 "네임 스페이스"라고하는 이름으로 사용하는 것입니다.

3
나는 당신이 말하는 것을 얻지 만 기술적으로는 그런 것이 없습니다 image-name. 형식은 Docker 설명서user-name/repo-name:tag 에 따라 있어야합니다 . (Docker가 더 나은 용어를 사용하기를 바랍니다. 혼란스럽고 항상 일관성이 없습니다.)
wisbucky

@wisbucky 감사합니다! 답변을 업데이트했습니다. 실제로 1 년 전에이 질문에 대답했을 때 문서가 그렇게 좋지 않았습니다. 예를 들어, 당시에는 도커 용어집에 "layer"및 "namespace"(!)가 포함되어 있지 않기 때문에 docker github repo에서 문제를 만들었습니다.
Paulo Merson

1
그리고 nimmis / docker-alpine-java : latest
Adam

1
Oooops -docker info |grep Registry
아담

2

고정 표시기 저장소의 귀여운 조합 registryimage.

docker tag foo <registry>/<image>:<tag>

와 같다

docker tag foo <repository>:<tag>

0

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 레지스트리에서 관리하는 개인 저장소에 대해 새 서명을 표시하고 있음을 확인할 수 있습니다.


"위의 각 이미지를 리포지토리로 푸시하는 도커 푸시 명령"-이미지를 리포지토리로 푸시하지 않고 리포지토리를 레지스트리로 푸시합니다. 아니면 내가 틀렸어?
팔러

0

Docker Hub 및 기타 타사 저장소 호스팅 서비스를 "레지스트리"라고합니다. 레지스트리는 리포지토리 모음을 저장합니다.

레지스트리에는 많은 저장소가있을 수 있으며 저장소에는 태그를 사용하여 개별적으로 버전이 지정된 동일한 이미지의 여러 버전이있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.