3. 이미지 레지스트리

2024. 6. 29. 22:16·Docker
목차
  1. 레지스트리와 이미지명
  2. 레지스트리
  3. 이미지 네이밍 규칙
  4. 이미지 pull, push
  5. 도커 login, logout
  6. 이미지 삭제
  7. 참고

레지스트리와 이미지명

이미지 레지스트리는 도커 이미지를 저장하는 저장소이다.

이 이미지 레지스트리를 통해서 개인이나 팀이 이미지를 다른 사람과 공유하거나 필요한 이미지를 다운 받을 수 있다.

 

이미지 레지스트리가 제공하는 기능

레지스트리

이미지가 저장되는 공간은 크게 세 가지로 분류할 수 있다.

먼저 도커가 설치되어 있는 호스트 머신의 로컬 스토리지이다.

그리고 온라인 저장소는 크게 두 가지 종류로 나눌 수 있다.

주로 기업에서 많이 사용하는 private 레지스트리와 도커 허브 같은 public 레지스트리가 있다.

  1. 도커 런 명령에서 이미지의 이름을 지정하면 먼저 로컬 스토리지에서 해당하는 이미지가 있는지 검색한다.
    로컬 스토리지는 도커를 실행하는 호스트 OS의 특정 폴더를 의미한다.
  2. 스토리지에 이미지가 있으면 바로 실행이 되고 스토리지에 이미지가 없으면 호스트 외부의 온라인 레지스트리에서 이미지를 로컬 스토리지로 다운받는다.
  3. 다운받은 로컬 스토리지의 이미지를 사용해서 컨테이너를 실행한다.
  4. 그리고 이제 다음부터는 Nginx 컨테이너를 실행할 때마다 로컬 스토리지에 이미 다운로드 받아놓은 이미지가 있기 때문에 온라인 레지스트리를 검색하지 않고 바로 컨테이너로 실행된다.

온라인 레지스트리는 public 레지스트리 private 레지스트리로 나뉜다.

특정한 네트워크에만 접근이 가능하면 private 레지스트리다.

모든 네트워크에서 접근이 가능하면 public 레지스트리이다.

이미지 네이밍 규칙

docker run -d -p 80:80 --name hellonginx nginx

위 명령어를 보면 맨 끝에 nginx라는 이미지 이름으로 이미지를 지정했다.

그런데 보통 이미지 이름에는 이미지를 어디서 다운받는지, 어떤 버전의 이미지를 다운받는지에 대한 정보가 모두 포함되어야 한다. 하지만 위 명령어를 보면 nginx라는 이미지 이름만 적었는데도 이미지를 다운로드할 수 있다. nginx라는 이름만 가지고 이미지를 다운받을 수 있었던 이유는 이 이미지 이름에 규칙이 있고 디폴트로 지정되는 기본 값이 있기 때문이다. 이미지의 네이밍 규칙은 이미지를 만들고 공유하는 데 있어서 꼭 필요한 정보이기 때문에 꼼꼼하게 알아보자

 

이미지 이름은 크게 레지스트리 주소, 프로젝트 명, 이미지 명, 이미지 태그로 구성된다.

레지스트리 주소는 어떤 레지스트리를 사용할지 지정한다.

  • 도커 허브 말고도 레지스트리가 여러 개 있을 수 있기 때문에 이미지를 어떤 레지스트리에서 다운로드하고 업로드할지를 지정해야 한다.
  • 레지스트리 주소가 비어 있는 경우에는 기본 값으로 지정된 레지스트리 주소가 사용된다.
  • 도커를 사용하면 기본 레지스트리 값은 도커 허브의 주소인 docker.io 이다.

프로젝트 명은 이미지를 보관하는 폴더 같은 개념이다.

  • 레지스트리마다 이 프로젝트를 정의하는 방식이 조금 다를 수 있다.
  • 도커 허브 같은 경우는 가입한 사용자의 계정명이 프로젝트 명이 된다.

이미지 명은 다운로드 받을 이미지의 이름을 의미한다. 이미지 태그는 이미지의 버전이다.

  • 이미지 태그를 빈값으로 입력하면 최신 버전을 의미하는 latest가 기본값으로 사용된다.

 

nginx 이미지 이름을 살펴보자.

도커는 도커사가 직접 검증한 이미지는 오피셜 이미지로 제공하고 있다.

그리고 이 오피셜 이미지는 라이브러리라는 프로젝트에서 관리한다.

그래서 별도로 계정명을 입력하지 않으면 라이브러리가 기본 값으로 적용된다.

그래서 프로젝트명을 비워놓으면 공식 nginx 이미지를 다운받게 된다.

이미지 pull, push

명령어

아래의 이미지의 이름은 이미지의 네이밍 규칙에 따라서 작성하면 된다.

docker pull 이미지명

로컬 스토리지로 이미지 다운로드

docker tag 기존이미지명 추가할이미지명

로컬스토리지의 이미지명 추가

tag 명령어는 새로운 이미지명을 만다는 명령어이다.

새로운 이미지명을 만들기 위해서는 새로운 이름을 붙일 원래의 이미지가 있어야 한다.

그래서 도커 tag 명령에는 기존에 가지고 있는 이미지명과 새롭게 추가할 이미지명을 입력하면 된다.

docker push 이미지명

이미지 레지스트리에 이미지 업로드

도커 login, logout

명령어

docker login

이미지 레지스트리 인증 정보 생성

도커 로그인 명령으로 로그인하시면 스토리지의 특정 공간에 인증 정보가 생성된다.

 

docker logout

이미지 레지스트리 인증 정보 삭제

도커 로그아웃을 입력하면 인증 정보가 저장되어 있는 파일이 삭제된다.

 

docker image rm 이미지명

로컬 스토리지의 이미지 삭제

이미지 삭제

container id는 똑같지만 이미지 명이 다른 이미지가 2개 있을 경우 이미지 태그를 하나만 삭제할 때는 이 이미지를 참조하고 있는 다른 이미지명이 있기 때문에 untagged가 되고 삭제는 되지 않았지만 두 번째로 이미지를 삭제할 때는 더 이상 이 이미지를 참조하고 있는 이미지명이 없기 때문에 파일 자체가 삭제되어 버린다. 이렇게 이미지와 이미지 명의 관계는 실제 파일과 참조 링크처럼 생각면 된다.

물리적인 파일에 여러 개의 링크 형태로 이미지에 이름을 붙일 수 있고, 더 이상 참조하는 이미지 명이 없을 경우에 물리적인 파일도 삭제된다.

참고

인프런의 개발자를 위한 쉬운 도커 강의를 보고 정리한 글입니다.

https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%89%AC%EC%9A%B4-%EB%8F%84%EC%BB%A4/dashboard

'Docker' 카테고리의 다른 글

7. 도커 볼륨  (0) 2024.08.16
6. 네트워크  (1) 2024.08.15
5. 컨테이너 애플리케이션 구성  (0) 2024.08.15
4. 이미지 빌드  (0) 2024.08.14
2.이미지와 컨테이너  (0) 2024.06.29
  1. 레지스트리와 이미지명
  2. 레지스트리
  3. 이미지 네이밍 규칙
  4. 이미지 pull, push
  5. 도커 login, logout
  6. 이미지 삭제
  7. 참고
'Docker' 카테고리의 다른 글
  • 6. 네트워크
  • 5. 컨테이너 애플리케이션 구성
  • 4. 이미지 빌드
  • 2.이미지와 컨테이너
an_jjin
an_jjin
공부한 내용을 정리하는 개발 기록 블로그
an_jjin
An Devlog
an_jjin
전체
오늘
어제
  • 분류 전체보기
    • JAVA
      • 초급
      • 중급1
      • 중급2
      • 고급1
    • Spring
      • 핵심 원리 기본
      • MVC1
      • MVC2
      • DB1
      • 락
      • 디자인 패턴
      • AOP
    • JPA
      • JPA 기본
      • JPA 활용 1
      • JPA 활용 2
      • Spring Data Jpa
      • JPA 정리
    • 프로젝트
      • Filmeet
      • FitTrip
      • Kidsping
    • CS
      • 기술 면접 대비 CS 전공 핵심요약집
    • 네트워크
      • HTTP
      • WebSocket
    • 데이터베이스
    • 운영체제
      • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
    • Git
    • Kafka
    • Docker
    • [LG유플러스] 유레카
    • 회고

블로그 메뉴

  • 홈
  • 태그
  • 방명록

링크

공지사항

인기 글

태그

트랜잭션 아웃박스 패턴
transactional outbox pattern
redis 분산락
redlock
AOP
동시성
프록시 팩토리
객체지향
빈 후처리기
선착순 응모 시스템
lg 유레카
lg 유플러스 유레카 sw 교육 후기
redis
before_commit
이벤트 응모 시스템
db부하
캐시
자바
queryplan
spring websocket
lg 유플러스 유레카
Transactional Outbox
Websocket
STOMP
lg 유플러스 유레카 sw 교육
분산락
도커
스레드
after_commit
lg 유플러스 유레카 후기

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
an_jjin
3. 이미지 레지스트리

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.