[Docker]도커 허브, 레지스트리

Jay·2022년 8월 25일
0

해당 포스트 내용은 엘튼 스톤맨의 "도커 교과서"를 읽고 이해한 내용을 바탕으로 작성하였습니다.

도커 이미지 참조의 구조

도커 플랫폼은 소프트웨어 배포 기능을 내장하고 있다. 도커 레지스트리는 도커 이미지가 저장되는 서버로, 도커 허브가 가장 유명한 레지스트리이자 도커 엔진에 기본적으로 설정된 레지스트리이다.
도커 이미지 이름에는 해당 이미지를 도커 레지스트리로부터 내려받아 사용하기 위한 모든 정보가 포함되어 있다. 아래와 같은 이미지 이름(=이미지 참조)의 구조를 보면 4가지의 요소로 구성되어 있다.

<레지스트리 도메인>/<이미지 작성자 계정>/<이미지 레포지토리 이름>:<이미지 태그>

이미지 참조는 레지스트리에서 특정 이미지를 식별하는 식별자 역할을 수행한다. 따라서 다른 사람이 이미지를 구체적으로 사용하게 하려면 상세한 정보들을 이미지 이름에 포함시켜야 한다.

  • 도메인 : 이미지가 저장된 레지스트리의 도메인이다. 기본값은 도커 허브(docker.io)이다.
  • 작성자 계정 : 이미지를 작성한 계정이다. 개인 혹은 단체의 이름이 해당된다.
  • 레포지토리 이름 : 일반적으로 애플리케이션의 이름에 해당한다, 하나의 레포지토리는 여러 버전의 이미지를 가질 수 있다.
  • 이미지 태그 : 애플리케이션의 버전이나 변형을 나타낸다. 기본값은 latest이다. 하지만 새로 만든 이미지가 항상 최신 버전일 수는 없기 때문에 항상 명시적으로 태그를 부여해야 한다.


도커 허브 이미지 푸시

도커 계정으로 로그인을 하면 자신의 계정이나 푸시 권한이 부여된 레지스트리에 이미지를 푸시할 수 있다.

docker images 명령어로 확인한 나의 이미지 목록이다. 두 이미지의 ID가 같은 것으로 보아 두 이미지는 같은 이미지이지만, 서로 다른 이미지 참조를 가지고 있다. 위의 이미지에는 계정이름과 태그를 지정해주어 jaewhan232라는 계정 이름과 v1.0이라는 태그를 가지지만, 두번째 이미지에는 계정이름과 태그가 주어지지 않아 태그만 latest 태그를 가지고 있다. 도커 이미지를 올바르게 푸시하기 위해서는 이처럼 계정 이름과 태그를 지정하여 푸시해야 한다.

docker image push <계정명>/<이미지>:<태그>

도커 명령어를 통해 레포지토리에 이미지를 푸시하는 명령어이다. 도커 레지스트리도 로컬 도커 엔진과 같은 방식으로 이미지 레이어를 관리한다. 따라서 이미지를 푸시하면 실제 업로드 대상이 되는 것은 이미지 레이어이다.



효율적인 이미지 태그 사용

이미지 태그를 통해 버전을 구별하고 이미지 사용을 달리하는 것은 사람들이 자신이 원하는 이미지를 정확히 사용하는데 매우 중요하다. 도커 이미지 태그에는 어떤 문자열이라도 포함시킬 수 있지만, 일반적으로 소프트웨어가 소수점으로 구분되는 버전표현법을 사용하는 것처럼 이미지 태그에도 소수점을 사용한 버전 표현을 사용한다.

<major>.<minor>.<patch>
  • patch : patch 자리의 변경은 버그 수정과 같이 작은 변경을 나타낸다.
  • minor : minor 자리의 변경은 기존 기능은 유지되고 새로운 기능이 추가되었음을 나타낸다.
  • major : major 자리의 변경은 새로운 기능의 추가와 이전 버전과의 공유가 안됨을 나타낸다.

0개의 댓글