Project.log

컨테이너(Container)란? / 이미지(Image)란? 본문

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
반응형

'Docker' 카테고리의 다른 글

Docker(도커)란 무엇이고 왜 배우는가?  (5) 2025.08.11