Post

[Docker] 도커 이미지 관리

📌 들어가며

이번 글에서는 도커 이미지(Image)를 다루는 법을 정리한다. 이미지를 가져오고(pull) → 살펴보고(inspect) → 저장/공유하고(save/push) → 삭제(rm)하는 전체 수명주기를 명령어 중심으로 익힌다.

이미지 vs 컨테이너? 이미지는 실행에 필요한 파일·설정을 담은 정적 템플릿(설계도)이고, 컨테이너는 그 이미지를 실행한 동적 인스턴스다. 하나의 이미지로 여러 컨테이너를 찍어낼 수 있다.


1. 이미지 수명주기 한눈에

flowchart LR
    Hub[("🐳 Docker Hub")]
    Local["💻 로컬 이미지"]
    File["📦 tar 파일"]
    Hub -- "pull" --> Local
    Local -- "push" --> Hub
    Local -- "save" --> File
    File -- "load" --> Local
    Local -- "run" --> Container["📦 컨테이너"]
    Local -- "rm" --> Del["🗑️ 삭제"]

2. 이미지 가져오기 (Pull)

Docker Hub(중앙 저장소)에서 이미지를 로컬로 가져온다.

1
2
3
4
docker pull [이미지 이름]:[태그]

docker pull ubuntu           # 태그 생략 시 latest
docker pull ubuntu:18.04     # 특정 버전
요소설명
이미지 이름가져올 이미지
태그특정 버전(생략 시 latest)

💡 latest를 맹신하지 말자. latest는 “가장 최근”이 아니라 단지 태그를 생략했을 때의 기본 이름일 뿐이다. 재현 가능한 배포를 위해서는 ubuntu:18.04처럼 버전 태그를 명시하는 것이 안전하다.


3. 이미지 살펴보기 (Inspect)

이미지의 ID·생성일·크기·레이어·환경 변수 등을 JSON으로 확인한다.

1
2
3
4
docker image inspect [이미지 이름]:[태그]

# 특정 정보만: OS 정보
docker image inspect --format='{{.Os}}' [이미지 이름]:[태그]

4. 저장하고 공유하기

이미지 저장 (Save / Load)

로컬 이미지를 tar 파일로 저장해 다른 환경에서 불러온다.

1
2
docker image save [이미지 이름]:[태그] > [파일 이름].tar
# 다른 환경에서: docker image load < [파일 이름].tar

💡 tar 파일은 gzip·bzip2로 압축해 크기를 줄일 수 있다. 인터넷이 안 되는 폐쇄망(offline) 환경으로 이미지를 옮길 때 save/load가 유용하다.

이미지 공유 (Push)

Docker Hub 등 저장소에 업로드한다. 로그인 → 태깅 → push 순서다.

1
2
3
docker login
docker image tag [기존 이름]:[태그] [저장소 이름]/[이미지 이름]:[태그]
docker push [저장소 이름]/[이미지 이름]:[태그]

⚠️ push하려면 이미지 이름이 반드시 저장소이름/이미지이름:태그 형식이어야 한다. 그래서 로컬 이미지를 그대로 올릴 수 없고, docker tag로 저장소 경로를 붙인 이름으로 다시 태깅해야 한다.

프라이빗 레지스트리를 직접 구축하면, 중요한 이미지를 팀 내부에서만 안전하게 공유할 수 있다.


5. 이미지 삭제 (rm)

불필요한 이미지를 삭제한다.

1
2
docker image rm [이미지 이름]:[태그]
docker rmi [이미지 이름]:[태그]     # 축약형

⚠️ 삭제 전 해당 이미지를 쓰는 컨테이너가 없는지 확인해야 한다. 실행 중인 컨테이너가 있으면 이미지가 삭제되지 않으니, 먼저 컨테이너를 중지·삭제한 뒤 이미지를 지운다.


📝 정리

1
2
3
4
5
6
도커 이미지 관리
├─ Pull    docker pull 이름:태그 (Docker Hub)
├─ Inspect docker image inspect (--format으로 특정 정보)
├─ Save    tar로 저장/load (오프라인 이전)
├─ Push    login → tag(저장소경로) → push
└─ 삭제    docker rmi (컨테이너 먼저 정리)
명령역할
pull / push저장소에서 받기 / 올리기
save / load파일로 저장 / 불러오기
tag저장소 경로 이름 부여
rmi이미지 삭제

이미지 관리의 핵심은 버전 태그를 명시하고, 공유 시 저장소 경로로 태깅 후 push하는 것이다. 이미지는 설계도, 컨테이너는 실행체라는 관계를 기억하면 명령어들의 역할이 명확해진다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.