Docker를 공부하다 보면 “컨테이너” 다음으로 꼭 등장하는 개념이 바로 “이미지(Image)”다.
처음에는 이름 때문에 헷갈릴 수 있다. 사진 같은 이미지인가 싶지만, 전혀 다른 의미다.
결론부터 말하면, Docker 이미지는 “컨테이너를 만들기 위한 설계도”다.
즉, 컨테이너는 실행된 상태이고, 이미지는 그걸 만들기 위한 원본이다.

이미지와 컨테이너의 차이
이 둘은 항상 같이 나온다. 그래서 헷갈리기 쉽다.
- 이미지 = 실행하기 전 (설계도)
- 컨테이너 = 실행된 상태 (실제 동작)
예를 들어 설명해보면:
- 이미지 = 라면 조리법
- 컨테이너 = 실제 끓인 라면
조리법(이미지)이 있어야 라면(컨테이너)을 만들 수 있다.
그래서 Docker에서는 항상:
이미지 → 컨테이너
이 흐름으로 움직인다.
이미지에는 무엇이 들어 있을까
Docker 이미지는 단순한 파일 하나가 아니다.
이미지 안에는:
- 프로그램 코드
- 필요한 라이브러리
- 설정 파일
- 실행 방법
이 모두가 들어 있다.
그래서 이미지만 있으면, 어디서든 똑같은 환경으로 프로그램을 실행할 수 있다.
예를 들어 Nginx 이미지를 사용하면:
- 설치 과정 없이
- 환경 설정 없이
- 바로 웹서버 실행
이 가능하다.
왜 이미지를 사용할까
이미지를 사용하는 이유는 크게 3가지다.
1. 설치 과정이 필요 없다
원래 서버를 세팅하려면:
- 프로그램 설치
- 환경 설정
- 버전 맞추기
이 과정을 반복해야 한다.
하지만 Docker 이미지는 이미 준비된 상태다.
그래서:
docker run nginx
이 한 줄로 바로 실행된다.
2. 어디서 실행해도 동일하다
개발할 때 자주 나오는 문제:
“내 컴퓨터에서는 되는데 서버에서는 안 됨”
이건 환경이 다르기 때문이다.
하지만 이미지를 사용하면:
- 개발 환경
- 테스트 서버
- 운영 서버
모두 같은 환경으로 실행된다.
그래서 오류가 크게 줄어든다.
3. 복사와 배포가 쉽다
이미지는 복사해서 어디든 보낼 수 있다.
그래서:
- 서버 1 → 서버 2
- 로컬 → 클라우드
같이 쉽게 옮길 수 있다.
그래서 대규모 서비스에서 매우 중요하다.
이미지는 어디서 가져올까
Docker 이미지는 보통 인터넷에서 가져온다.
대표적인 곳이 바로 Docker Hub다.
여기에는:
- Nginx
- MySQL
- Node.js
- Redis
같은 유명한 프로그램 이미지가 이미 준비되어 있다.
그래서 직접 만들지 않아도 바로 사용할 수 있다.
필요하면 내가 직접 이미지를 만들 수도 있다.
이미지는 어떻게 만들어질까
이미지는 보통 Dockerfile이라는 파일로 만든다.
Dockerfile은 “이 컨테이너를 어떻게 만들지”를 적어놓은 파일이다.
예를 들어:
- 어떤 OS를 사용할지
- 어떤 프로그램을 설치할지
- 어떻게 실행할지
를 적는다.
그리고 이걸 실행하면 이미지가 만들어진다.
즉:
- Dockerfile → 이미지 → 컨테이너
이 흐름이 된다.
이미지는 왜 “읽기 전용”일까
Docker 이미지는 기본적으로 수정할 수 없다.
즉, 읽기 전용이다.
그래서 이미지를 그대로 두고, 컨테이너를 여러 개 만들어 사용할 수 있다.
예를 들어:
- 같은 이미지로 컨테이너 10개 생성
이 가능하다.
그래서 서버 확장이 매우 쉬워진다.
한 줄로 정리하면
Docker 이미지는 컨테이너를 만들기 위한 설계도다. 프로그램과 환경이 모두 포함되어 있어서, 어디서든 동일하게 실행할 수 있게 해준다.