Docker
컨테이너(Container)란? / 이미지(Image)란?
jinuk_
2025. 8. 20. 14:46
728x90
반응형

Docker에서 컨테이너(Container)란?
도커 컨테이너는 도커 이미지의 실행 가능한 인스턴스(Instance)입니다.
즉, 생명이 없는 '설계도(이미지)'에 생명을 불어넣어 실제로 동작하는 '애플리케이션'이라 할 수 입니다.
컨테이너는 실행될 때 이미지 위에 읽기/쓰기 가능한 계층이 추가되어,
각 컨테이너가 독립적으로 실행되며 파일 시스템과 프로세스가 서로 격리됩니다.
- 컨테이너는 호스트 운영체제의 커널을 공유합니다.
- 독립된 실행 환경을 제공하여, 마치 가상머신처럼 보이지만 훨씬 가볍습니다.
- 실행 중인 컨테이너는 프로세스이므로 시작/중지/재시작/삭제가 가능합니다.
즉,
- 이미지(Image) = 설계도(변하지 않음, 템플릿)
- 컨테이너(Container) = 설계도로부터 실행된 실제 프로그램(동작 중인 인스턴스)
라고 정리할 수 있습니다.
Docker에서 이미지(Image)란?
도커 이미지는 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는, 변하지 않는(Immutable) 실행 패키지입니다. (읽기전용)
단순히 코드만 들어있는 것이 아니라, 코드, 런타임(예: Node.js, JVM), 시스템 도구, 라이브러리, 설정 등 애플리케이션 구동에 필요한
환경 전체를 하나로 묶어놓은 '템플릿'입니다.
이미지는 여러 개의 레이어(layer) 로 구성되어 있어, 효율적으로 버전을 관리하고 캐시를 재사용할 수 있습니다.
즉, 이미지는 실행 전까지는 “정적인 설계도”이며 변하지 않습니다.
쉬운 설명!
- 이미지(Image): 붕어빵 틀 (변하지 않는 설계도)
- 컨테이너(Container): 붕어빵 (틀에서 찍혀 나온 실제 실행체)
- 도커 이미지 = 붕어빵 틀
붕어빵을 만들려면 먼저 모양을 잡아주는 틀이 필요하죠.
붕어빵 틀은 한 번 만들어놓으면 변하지 않고, 같은 모양의 붕어빵을 계속 찍어낼 수 있습니다.
도커 이미지도 똑같습니다. 애플리케이션 실행에 필요한 **환경(코드, 라이브러리, 설정 등)**을 미리 틀처럼 만들어 둔 것이
바로 이미지입니다. - 도커 컨테이너 = 붕어빵 틀로 찍어낸 붕어빵
붕어빵 틀(이미지)을 가지고 실제 반죽을 부어서 구워내면 진짜 붕어빵이 나오죠.
이 붕어빵이 바로 컨테이너입니다.
붕어빵 틀은 하나지만, 그 틀로 수십 개의 붕어빵을 찍어낼 수 있듯이,
도커 이미지 하나로 여러 개의 컨테이너를 실행할 수 있습니다.
또 각각의 붕어빵은 서로 독립적이듯이, 컨테이너도 서로 영향을 주지 않고 독립적으로 동작합니다.
내가 이해한 방식!
🚴 자전거(사이클) 비유
- 이미지 = 자전거 설계도/모델
"로드 자전거"라는 모델이 있으면, 그 기본 구조와 부품 규격은 바뀌지 않습니다. - 컨테이너 = 매장에서 조립된 자전거
같은 모델이라도 실제 조립된 자전거는 각각 다릅니다.
주행거리, 체인 상태, 타이어 마모 정도가 모두 다르죠.
👉 이미지(모델)는 변하지 않고, 컨테이너(자전거)는 실제로 굴러가는 개별 존재입니다.
728x90
반응형