도커 이미지 다루기

2024. 12. 7. 02:34·Infra/Docker

도커 명령은 크게 이미지에 대한 명령과 컨테이너에 대한 명령 두가지로 나뉜다.

 

도커 이미지 다루기

도커 이미지는 빌드할 때마다 다시 생성되는데, 내용의 해시값을 이미지 ID로 삼기 때문에 내용이 바뀌면 이미지 ID도 새 값이 부여된다.

 

도움말

  • 옵션에 대한 도움말
  • docker help
  • 이미지 하위 옵션에 대한 도움말
  • docker image --help

 

docker image build - 이미지 빌드

docker image build는 Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령이다.

docker image build -t 이미지명[:태그명] Dockerfile의_경로

-t 옵션은 이미지명과 태그명을 붙이는 것으로 필수적으로 사용된다.

 

예를 들어 Dockerfile이 현재 작업 디렉터리에 있다면 다음과 같이 실행한다.

docker image build -t example/echo:latest .   // example/echo 라는 이미지의 :latest 태그

 

-f 옵션

docker image build 명령은 Dockerfile이라는 이름으로 된 Dockerfile을 찾는다.
그 외 파일명으로 된 Dockerfile을 사용하려면 -f 옵션을 사용해야 한다.

docker image build -f Dockerfile-test -t example/echo:latest .

 

--pull 옵션

docker image build 명령으로 이미지를 빌드하면 처음엔 FROM 인스트럭션에 지정한 이미지를 내려받아 새로운 이미지를 빌드한다.
그 다음부터는 해당 이미지를 삭제하지 않는 한 호스트 운영체제에 저장되어 매번 FROM 이미지를 받아오지 않는다.

--pull 옵션은 이 FROM 이미지를 매번 강제로 받아오도록 한다.

docker image build --pull=true -t example/echo:latest .

--pull 옵션은 레지스트리에서 최신 버전이 있는지를 매번 확인해야 하므로 빌드 속도 면에서 불리하다.
그래서 실무에서는 태그명을 latest로 지정하기보다 지정된 태그명을 사용한다.

 

docker search - 이미지 검색

docker search를 사용하면 도커 허브에 등록된 리포지토리를 검색할 수 있다.

docker search [옵션] 검색_키워드

--limit 옵션으로 최대 검색 건수를 제한할 수 있다.

docker search --limit 5 mysql

해당 명령으로 리포지토리는 검색할 수 있지만 태그는 알 수 없다.

 

docker image pull - 이미지 내려받기

도커 이미지를 내려받으려면 docker image pull 명령을 사용한다.

docker image pull [옵션] 리포지토리명[:태그명]

예를 들어 jenkins 이미지를 내려받으려면 다음과 같이 한다.

docker image pull jenkins:latest

태그명을 생략하면 기본값으로 지정된 태그(latest)가 적용된다.

 

docker image ls - 보유한 도커 이미지 목록 보기

docker image ls 명령은 현재 호스트 운영체제에 저장된 도커 이미지 목록을 보여준다.

docker image ls [옵션] [리포지토리[:태그]]
docker image ls

 

docker image tag - 이미지에 태그 붙이기

docker image tag는 도커 이미지의 특정 버전에 태그를 붙일 때 사용한다.

$ docker image ls
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
gihyodocker/echo   latest    4520b6a66d26   6 years ago   1.07GB
<none>   <none>    1852b6ardd26   6 years ago   1.07GB
<none>   <none>    7258cgj66d26   6 years ago   1.07GB

최신 이미지의 태그명은 example/image:latest이고 그 이전의 이미지는 <none>이라고 돼 있다.
도커에서 태그 하나에 연결될 수 있는 이미지는 하나이므로 최신 이미지를 나타내는 latest 태그는 가장 최신의 이미지에만 붙을 수 있는 것이다.
이미지 ID에 태그명을 붙이는 것은 이미지를 쉽게 참조할 수 있도록 붙인 별명이다.

docker image tag 기반이미지명[:태그] 새이미지명[:태그]

 

예를들어 example/echo의 latest 이미지에 0.1.0 태그를 부여하려면 다음과 하면 된다.

docker image tag example/echo:latest example/echo:0.1.0
$ docker image ls
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
example/echo   0.1.0    4520b6a66d26   1 minutes ago   1.07GB
example/echo   latest    4520b6a66d26   1 minutes ago   1.07GB

두 이미지 모두 4520b6a66d26 이미지 ID를 가리키고 있다.

 

docker image push - 이미지를 외부에 공개하기

docker image push 명령은 현재 저장된 도커 이미지를 도커 허브 등의 레지스트리에 등록하기 위해 사용한다.

docker image push [옵션] 리포지토리명[:태그]

도커 허브는 자신 혹은 소속 기관이 소유한 리포지토리에만 이미지를 등록할 수 있다.
따라서 docker image tag 명령을 통해 네임스페이스를 도커 허브 ID와 같이 변경한다.

$ docker image tag example/echo:latest poloopy/echo:latest
$ docker image ls
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
example/echo   0.1.0    4520b6a66d26   1 minutes ago   1.07GB
example/echo   latest    4520b6a66d26   1 minutes ago   1.07GB
poloopy/echo   latest    4520b6a66d26   1 minutes ago   1.07GB

그 다음 docker image push 명령에 등록할 이미지를 지정한다.

docker image push poloopy/echo:latest

이 리포지토리는 공개 리포지토리로 누구나 docker image pull 명령으로 이미지를 내려받을 수 있다.

 

 

** 이 글은 도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문 책을 공부한 내용을 담고 있습니다.

'Infra > Docker' 카테고리의 다른 글

도커 컨테이너 다루기  (0) 2024.12.07
컨테이너로 애플리케이션 실행하기  (1) 2024.12.06
'Infra/Docker' 카테고리의 다른 글
  • 도커 컨테이너 다루기
  • 컨테이너로 애플리케이션 실행하기
뽀루피
뽀루피
  • 뽀루피
    뽀루피의 개발스토리
    뽀루피
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프로젝트 (3)
      • Java (32)
        • JPA (4)
        • Spring (8)
      • FrontEnd (4)
        • JavaScript (1)
        • Flutter (3)
      • DB (4)
        • SQL (4)
      • 알고리즘 (10)
      • Git (3)
      • SSAFY (0)
      • Figma (1)
      • Notion (0)
      • Jira (0)
      • 기획 (0)
      • 네트워크 (10)
      • 우아한테크코스 (2)
      • Infra (5)
        • AWS (0)
        • Docker (3)
      • AI (1)
      • 자격증 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Docker
    스프링
    n8n
    JPA
    알고리즘
    백준
    SQL
    java
    Jenkins
    트랜잭션
    네트워크
    Stomp
    웹소켓
    cloudflare
    크래프트맨 멘탈리티
    redis streams
    자바
    모던 자바 인 액션
    네트워크 기초
    fetch join
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
뽀루피
도커 이미지 다루기
상단으로

티스토리툴바