COMPUTER SCIENCE

Container 개념 및 Docker

24_bean 2022. 8. 8. 10:06

Container(컨테이너) : 어떤 환경에서나 실행하기 위해 필요한 모든 요소를  포함하는 소프트웨어 패키지

Containerized application

 

컨테이너는 운영체제를 가상화하여 프라이빗 데이터 센터에서 퍼블릭 클라우드 또는 개발자 로컬 환경에 이르기 까지 어디서나 실행됩니다.

컨테이너화를 통해 신속한 작업, 효율적인 소프트웨어 배포가 가능합니다.

 

좀 더 깊게 개념적으로 접근하면, 컨테이너는 운영체제 수준에서 CPU, 메모리, 스토리지, 네트워크 리소스를 쉽게 공유할 수 있게 해주며 컨테이너가 실제로 실행되는 환경에서 애플리케이션을 추상화할 수 있는 논리 패키징 메커니즘을 제공합니다.


이점

  • 책임 분리
    • 개발자는 로직과 항목 종속에만 집중할 수 있고, 운영팀은 특정 소프트웨어 세부 요소 대신 배포 및 관리에에 집중할 수 있습니다.
  • 워크로드 이동성
    • 운영체제를 가리지 않고 어느 환경에서나 구동되므로 개발 및 배포가 매우 쉬워집니다.
  • 애플리케이션 격리
    • 운영체제 수준에서 대부분의 정보를 가상화 하기 때문에 논리적으로 다른 애플리케이션과 격리되어 쾌적한 OS환경을 제공합니다.
  • 이 것들 말고도 이점이 매우매우매우 많습니다

참고 : https://www.docker.com/resources/what-container/


Conatiner vs VIrtual Machine?

사실 VM과 Container의 역할을 크게 놓고보면 유사합니다.

다만 컨테이너가 좀 더 가볍다는 특징을 가지고 있습니다.

VM vs Container

 

  • 컨테이너가 VM 보다 훨씬 더 경량입니다.
  • 컨테이너는 OS 수준에서 가상화되고 VM은 하드웨어 수준에서 가상화됩니다.
  • 컨테이너는 OS Kernel을 공유하며 VM에 필요한 것 보다 훨씬 적은 메모리를 사용합니다.

Docker : 현재 가장 많이 쓰이는 컨테이너의 종류 중 하나

왜? 사람들은 Docker를 많이 사용하는가?

 

Docker 이미지 - 컨테이너 박스에 고래..

 

  • 하나의 Configuration으로 모든 플랫폼에서 실행할 수 있습니다. 하나의 Docker 이미지를 다른 환경에서 사용할 수 있습니다.
  • Docker 이미지는 변경이 불가한 특징을 갖기 때문에 개발-운영 사이에 애플리케이션 환경이 변하기 않습니다.
  • VM과 달리 오버 헤드 메모리가 적기 때문에 여러 서비스를 실행하는 데 도움이 됩니다.
  • 웹 서버와 연결된 API를 격리합니다. 이 경우 다른 컨테이너에서 API 서버를 실행할 수 있습니다.
  • 컨테이너가 OS를 부팅하지 않고 어플리케이션을 실행하기 때문에 빠른 배포가 가능합니다.

이미지 (Image)

Docker는 Client(docker)-Server(dockerd) 로 구성됩니다.

 

Image는 docker container를 생성하기 위한 template이고, 

Container는 Images가 실제 메모리에 로딩된 Instance입니다.

 

* 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(Immutable). 

Docker 구조
Docker Image

즉, 새로운 서버가 추가되면 미리 생성되어있는 이미지를 다운받고 컨테이너를 생성하면 애플리케이션을 실행가능합니다.

한 서버에 여러개의 컨테이너를 실행할 수도 있고, 아주 많은 서버도 문제 없습니다.

도커 이미지는 Docker hub 혹은  Docker Registry (저장소) 에 등록되어있습니다.


레이어(Layer)

이미지는 여러개의 읽기 전용(read only) 레이어로 구성되고 파일이 추가되거나 수정되면 새로운 레이어가 생성됩니다.

컨테이너를 생성할 때도 레이어 방식을 사용하는데 기존의 이미지 레이어 위에 읽기/쓰기 레이어를 추가합니다. 

 

이미지 레이어를 그대로 사용하면서 컨테이너가 실행중에 생성하는 파일이나 변경된 내용은 읽기/쓰기 레이어에 저장되므로 여러개의 컨테이너를 생성해도 최소한의 용량만 사용합니다.

Docker Layer

* 필요할 때만 필요한 레이어를 다운받아 쌓기만 하면 됩니다. (대박적)


Reference : https://www.docker.com/

 

Home - Docker

Learn how Atomist will help Docker meet the challenge of securing secure software supply chains for development teams.

www.docker.com

https://cloud.google.com/learn/what-are-containers?hl=en 

 

What are containers?  |  Google Cloud

Containers are lightweight packages of software that contain all of the necessary elements to run in any environment.

cloud.google.com