[Docker] 도커 이미지(Image)와 컨테이너(Container)

안나·2024년 1월 23일
0

DevOps

목록 보기
2/21
post-thumbnail

🐳도커 이미지(Image)와 컨테이너(Container)


도커에서 가장 중요한 개념은 컨테이너와 이미지라는 개념이다.

이미지 (Image)

컨테이너를 만드는데 필요한 모든 파일과 설정값을 가진 읽기전용(Read-only) 템플릿.

  • 실행에 필요한 파일과 설정값 등을 포함하고 있는 도커파일을 만든 후 DockerFile을 빌드하여 이미지를 생성한다.

  • 하나의 이미지로 여러 개의 도커 컨테이너를 생성할 수 있으며 도커 이미지를 수정하여도 이미 생성하여 실행 중인 도커 컨테이너에는 영향을 주지 않는다.

    • 마치 도넛 레시피로 도넛을 만들고 도넛 레시피를 변경한 것과 같다.
  • Docker 레이어(Layer) 저장방식

    • 도커 이미지의 내용이 일부 수정되었을 때 도커 이미지에 들어있는 모든 파일들을 다시 다운 받는 것은 매우 비효율적이다.

    • 이를 해결하기 위해 Layer라는 개념을 사용하여 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일 시스템으로 사용할 수 있게 해준다.

    • ubuntu 이미지가 A + B + C의 집합이라면, ubuntu 이미지를 베이스로 만든 nginx 이미지는 A + B + C + nginx가 된다.
      webapp 이미지를 nginx 이미지 기반으로 만들었다면 예상대로  A + B + C + nginx + source 레이어로 구성된다.
      webapp에서 source를 수정하면 ABCnginx 레이어를 제외한 새로운 source(v2) 레이어만 다운받으면 되기 때문에 굉장히 효율적으로 이미지를 관리할 수 있다.


컨테이너 (Container)

이미지를 기반으로 독립된 공간에서 실행한 가상환경을 의미

  • 도커 이미지를 실행하면 컨테이너가 생성된다.
  • 이미지로 컨테이너를 생성하면 이미지의 목적에 맞는 파일이 들어있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성된다. 이것이 바로 컨테이너이다.


📎 참고 링크

0개의 댓글