[Docker] 이미지 다운로드부터 직접 빌드까지 완벽 정리

2025. 11. 6. 16:11Infrastructure Cloud 엔지니어과정

728x90

배울내용:

docker 기본명령어

도커 이미지 다운로드

도커 이미지 목록 및 정보 확인

도커 이미지 삭제

도커 컨테이너로 이미지 생성

도커를 이용해 웹사이트 열기

Docker이미지관리
Dockerfile
Docker튜토리얼

 

 

 

 

 

🐳 Docker 이미지 관리 완벽 정리 | sarimus

도커(Docker)는 가상머신보다 가볍고 빠르게 애플리케이션을 배포할 수 있는 기술이예오!
이번 포스팅에서는 도커 이미지(Docker Image) 를 중심으로 다운로드부터 삭제, 직접 빌드까지 전 과정을 정리했어오.

 

 

 

 

 

 

 1. 도커 이미지 다운로드

도커 이미지는 Docker Hub(공식 레지스트리) 또는 사설 레지스트리에서 받을 수 있답니다.

 

🔹 레지스트리(Registry) :

dnf의 리포지토리(repository) 와 비슷한 개념이에오.

🔹 사설 레지스트리 :
외부에 공개되면 안 되는 이미지를 내부에서만 관리하기 위해 사용되오.(기업에서 주로쓰는방식 AWS ,Azure 등등) 

 

 

 

기본 형식

[저장소 이름/]이미지 이름[:태그]
  • 저장소 이름 생략 시 → Docker Hub 공식 이미지로 인식
  • 태그(tag) 는 버전을 의미하며, 생략 시 latest 로 자동 설정

 

 

예시

 docker image pull alpine # Alpine Linux 최신 이미지 다운로드

 

마지막 줄에 docker.io 가 뜨면 → 공식 레지스트리에서 받은 것

용량 확인:약 8MB 내외의 경량 이미지 (아래의 명령어로 확인가능) 

 
docker image ls
 
 
 
 

 

 
 
# Nginx 최신 버전 다운로드 docker image pull nginx:latest
  • 여러 줄의 Pull complete 메시지는 nginx 실행에 필요한 여러 계층(layer) 들이 각각 받아지는 과정입니다.

도커 이미지 목록 및 정보 확인

 
docker image ls # 이미지 목록 출력

 

 

 

 

이미지를 자세히 보고 싶다면:

docker image inspect <Image ID>

 

💡 Image ID는 일부만 입력해도 고유하다면 인식되요!! ex) ID가 9704032331 일때 docker image inspect 97 << 이것도 가능 !! 그러나 동일되는 이미지가 있으면 그것과 구분이되는 뒷번호까지는 입력해야해오! 

 

inspect 결과에서 자주 보는 항목:

  • ID → SHA256 해시
  • RepoTags → 이미지 이름 + 태그
  • Config → Env → 이미지 내부 환경 변수

 

 

도커 이미지 삭제

docker image rm <Image ID> # 또는 docker image rm <이름>

❗ 만약 이미지가 실행 중인 컨테이너에서 사용 중이라면 삭제할 수 없어요!.

 

 

 

1️⃣ 컨테이너 목록 확인

docker container ps -a

 

 

2️⃣ 컨테이너 중지

docker container stop SarimusWebTest

 

 

3️⃣ 컨테이너 삭제

docker container rm SarimusWebTest
 

4️⃣ 이미지 삭제

docker image rm <Image ID>
 

모든 이미지 한 번에 정리하려면:

 
docker system prune -a

 

prune 은 나무 가지치기 에서 따온거라 저렇게 표현한것같습니당 

 

 

 

 

 

 

docker images 로 확인해보니 psc_web1 , httpd image 가 있는데 한번에 다 지워보겠습니다 

 

 

 

docker system prune -a 해서 Are you sure you want to continue? 라고 계속진행할거냐 라고할때 Y 또는 yes 해서 진행합니다 

 

 

 

 

 

 

 

 

docker images 로 다시 확인해보면 컬럼은 뜨지만 아래에 기존에 나왔던 2개의 image는 삭제 된걸 볼수있습니다. 

 

 

 

 

 

도커 이미지 활용 — 직접 만들기

공식 이미지들은 범용적이라서 최소 기능만 포함되어 있어용.
하지만 우리는 컨테이너를 커스터마이징한 뒤 나만의 이미지로 저장할 수 있읍니다.

 

방법 1️⃣ commit 명령어로 생성

컨테이너를 기반으로 이미지를 생성 

 
docker commit [컨테이너 이름] [새 이미지명]

🧪 실습 예시

 
 docker run --name apache04 -d -p 8093:80 httpd # 1. Apache 컨테이너 실행
 docker commit apache04 sarimus_apache:1.0 # 2. 컨테이너를 이미지로 변환 
 docker image ls # 3. 결과 확인

 

 

방법 2️⃣ Dockerfile로 이미지 생성

Dockerfile은 이미지 생성용 스크립트 예오.
반복적으로 동일한 이미지를 만들 때 가장 깔끔한 방식이랍니다 .

🧪 실습 시나리오

  1. Dockerfile 작성
  2. 이미지 빌드
  3. 컨테이너 실행
  4. 결과 확인
 
mkdir /root/web   # 작업 폴더 생성    
cd /root/web        # Dockerfile 작성 vi Dockerfile
 
 

Dockerfile 내용

- # vi Dockerfile
    
    FROM httpd
    
    LABEL author="sarimus"
    
    LABEL version="0.1"
    
    ADD index.html /usr/local/apache2/htdocs
    
    ENV TZ="Asia/Seoul"
    
    EXPOSE 80
    

       → 내용 저장

- Dockerfile 항목
    - FROM : 베이스 이미지 지정
    - LABEL : 이미지에 메타데이터 추가(이미지에 대한 정보)
    - ADD : 추가할 파일 / 디렉토리 지정
    - ENV : 환경 변수 설정
    - EXPOSE : 공개할 포트 지정
 
 

 

 

만약 화살표 쓰다가 ABCD 이런게 막 나오고 vim 에디터 작동이 안되면 vi 가 특수키 해석을 못하는 상태라 그래요

✅ 해결 방법

① vim 설치 (가장 깔끔한 방법)

sudo apt install vim -y
#이후엔 그냥:
#vim 파일명
#으로 열면 화살표, 백스페이스, 탭 전부 정상 작동

 

 

기본 페이지(index.html)

 
#vi index.html (cd /root/web 에서)
<html> <body bgcolor=yellow> Welcome To sarimus.com </body> </html>
 

이미지 빌드

docker build -t sarimus_web:0.1 /root/web

 

 

 

컨테이너 3개 실행

docker run -itd --name sarimusweb1 -p 8001:80 sarimus_web:0.1 
docker run -itd --name sarimusweb2 -p 8002:80 sarimus_web:0.1 
docker run -itd --name sarimusweb3 -p 8003:80 sarimus_web:0.1
 

 

이렇게 해쉬값이 각각 다르게 나오면 정상입니다. 

 

 

 

브라우저에서 확인

위와같이 포트만 다르게 해도 똑같이 index.html 만들어 build 시켰던게 보이게 됩니다 

 

 

 

정리 — sarimus 한 줄 요약

 

구분 주요 명령어 설명
이미지 다운로드 docker pull nginx Docker Hub에서 받기
목록 확인 docker image ls 로컬 이미지 확인
삭제 docker image rm <ID> 사용하지 않는 이미지 제거
커밋 생성 docker commit 컨테이너명 새이미지명 실행 중 컨테이너 기반 이미지 생성
Dockerfile 빌드 docker build -t 이미지명:버전 .  
728x90