컨테이너와 이미지 차이?
조금 더 쉽게 풀어 쓰고, 초보자도 이해하기 쉽게 설명을 보강해볼게요.
컨테이너(Container)와 이미지(Image)의 차이
컨테이너 기술을 처음 접하면 이미지와 컨테이너의 차이가 헷갈릴 수 있습니다.
쉽게 말하면, 이미지는 컨테이너의 설계도이고, 컨테이너는 그 설계도를 기반으로 실행된 실제 애플리케이션입니다.
1️⃣ 이미지 (Image)란?
✅ 컨테이너를 실행하기 위한 템플릿
✅ 애플리케이션 코드, 라이브러리, 종속성 등이 포함된 불변(immutable) 파일 시스템
✅ 컨테이너 실행 전 상태 → 정적인 상태
✅ Docker Hub, AWS ECR 등 이미지 레지스트리에 저장 가능
💡 이미지 예시
이미지는 가상 머신의 ISO 파일 또는 VM 템플릿과 비슷합니다.
즉, 설치 파일을 다운로드하고 실행해야 실제 OS가 동작하는 것처럼, 이미지를 실행해야 컨테이너가 실행됨.
2️⃣ 컨테이너 (Container)란?
✅ 이미지를 기반으로 실행되는 실행 환경
✅ 실행 중인 프로세스로, 필요한 CPU, 메모리 등 리소스를 할당받아 동작
✅ 여러 개의 컨테이너가 동일한 이미지를 기반으로 실행 가능
✅ 컨테이너 내부에서 변경이 발생해도 원본 이미지에는 영향을 주지 않음
💡 컨테이너 예시
ISO 파일을 이용해 부팅하면 가상 머신이 실행되는 것처럼, 이미지를 실행하면 컨테이너가 동작합니다.
3️⃣ 이미지와 컨테이너 비교
구분 이미지 (Image) 컨테이너 (Container)
설명 | 컨테이너 실행을 위한 설계도 | 이미지를 기반으로 실행된 환경 |
변경 가능 여부 | 불변(Immutable) | 실행 중 변경 가능 |
상태 | 정적 (변하지 않음) | 동적 (실행 중) |
저장 위치 | Docker Hub, ECR 등 | 실행 중인 호스트에서 동작 |
예제 | OS ISO 파일, VM 템플릿 | 부팅된 가상 머신 (VM) |
4️⃣ 정리하면?
🚀 이미지 = 실행 가능한 컨테이너의 설계도
🚀 컨테이너 = 이미지를 기반으로 실행된 애플리케이션
👉 예제
# 이미지 다운로드
docker pull nginx
# 이미지 목록 확인
docker images
# 이미지 기반으로 컨테이너 실행
docker run -d --name my-nginx -p 8080:80 nginx
# 실행 중인 컨테이너 확인
docker ps
이제 nginx 이미지를 기반으로 my-nginx 컨테이너가 실행된 것을 확인할 수 있습니다.
이 컨테이너를 삭제해도 원본 nginx 이미지는 그대로 남아 있습니다.
📌 컨테이너는 실행될 때 동적이며, 여러 개의 컨테이너가 같은 이미지를 공유할 수 있습니다!