버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

보통 IT인이 아니라면 ‘컨테이너’ 라는 말에 다음의 그림을 상상하실 겁니다.

...

1.1 Container

사전적 의미로 컨테이너는 어떤 물체를 격리하는 공간을 뜻합니다. 하지만 우리에게 컨테이너는 어떤 의미일까요?

컨테이너는 리눅스 기술을 사용하여, 선박의 컨테이너처럼 프로세스가 사용하는 자원을 격리하는 것입니다.

컨테이너는 기존의 온프레미스 환경이나 클라우드 환경 등 어디서나 실행될 수 있도록 애플리케이션 코드와 해당 라이브러리 및 종속 항목을 포함하는 독립적으로 실행 가능한 소프트웨어 패키지입니다.

  • 컨테이너는 OS의 기능을 활용하여 프로세스를 격리하고격리하고, 격리된 프로세스가 CPU, 메모리, 스토리지, 네트워크 리소스를 쉽게 공유할 공유수 있게 해줍니다.

  • 컨테이너는 격리된 프로세스 형태로 실행되므로 환경에 상관없이 빠르고 안정적이며 일관된 배포를 보장합니다.

...

  • VM은 하이퍼바이저라는 가상화 소프트웨어 계층을 사용하여 하드웨어를 가상화하고, 각 VM을 서로 분리하여 상호작용할 수 있는 가상 컴퓨팅 환경을 구축하는 기술입니다.

  • VM에는 애플리케이션, 관련 라이브러리 및 종속 항목과 함께 게스트 OS가 포함됩니다.

...

1.3 Container와 VM 비교

가상 환경에 익숙하다면 컨테이너를 가상 머신(VM)에 비교하여 생각하면 이해하기 쉽습니다.

...

컨테이너는 가상머신과 마찬가지로 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련해 줍니다.

Host

VM

컨테이너

VM

  • 하드웨어를 분리하여 업무별/부서별로 나누어서 사용

  • 업무별/부서별로 사용하기에는 리소스의 낭비요소가 많음 컨테이너는 OS의 기능을 활용하여 프로세스를 격리하고, 격리된 프로세스가 CPU, 메모리, 스토리지, 네트워크 리소스를 쉽게 공유할 수 있게 해줍니다.

  • 컨테이너는 격리된 프로세스 형태로 실행되므로 환경에 상관 없이 빠르고 안정적이며 일관된 배포를 보장합니다.

  • VM 은 하이퍼바이저라는 가상화 소프트웨어 계층을 사용하여 하드웨어를 가상화 하고, 각각의 VM을 서로 분리하여 상호작용 할 수 있는 가상 컴퓨팅 환경을 구축하는 기술입니다.

  • VM에는 애플리케이션, 이와 관련된 라이브러리 및 종속 항목과 함께 게스트 OS가 포함됩니다.

  • 컨테이너는 OS의 기능을 활용하여 프로세스를 격리하고, 격리된 프로세스가 CPU, 메모리, 스토리지, 네트워크 리소스를 쉽게 공유할 수 있게 해줍니다.

  • 컨테이너는 격리된 프로세스 형태로 실행되므로 환경에 상관 없이 빠르고 안정적이며 일관된 배포를 보장합니다.

컨테이너를 사용하면 개발자와 IT 운영팀이 훨씬 작은 단위로 업무를 수행할 수 있으므로 그에 따른 이점도 많습니다.

...

  • 사용자의 Request Traffic 이 증가함에 따라, 가상머신이나 컨테이너를 추가적으로 배포합니다.

  • 가상머신의 크기는 최소 몇 GB이지만, 컨테이너의 경우 Guest OS가 없기에 MB단위의 크기를 가집니다.

  • 가상머신은 배포하는데 수분에서 수 십분의 시간이 소요되지만, 컨테이너는 배포에 소요되는 몇 초 밖에 걸리지 않습니다.

(2) 탄력성 / 이식성 / 플랫폼독립성

...

컨테이너가 모든 종속 항목들을 자신과 함께 전달하므로전달하므로, OS나 라이브러리 등의 환경 설정이 호스트 운영 체제와 상관없이 동일하게 유지되며, On-premise 및 클라우드 환경에서 이를 재구성하지 않고 바로 실행할 수 있습니다

이런 특성으로 인해, 컨테이너는 운영체제 및 기동 장비 상관없이 어느 환경에서나 구동 되므로 개발 및 배포가 크게 쉬워집니다.

(3)성능

...

기존 가상화에서는 게스트 OS도 자체 메모리 요구 사항을 충족해야 하기 때문에 귀중한 RAM을 호스트에서 가져와야 합니다.

하지만 컨테이너는 OS자원을 공유하므로, OS의 CPU/MEMORY의 성능을 그대로 나타냅니다.

아래 자료는 2018년도 자료이지만, CPU와 Memory는 성능저하가 거의 없습니다.

컨테이너를 따로 Layer로 칭하지 않는 이유이기도 합니다.

...

(4) 유지 관리 효율

...

운영 체제 커널이 하나밖에 하나밖에 없기 때문에 운영 체제 수준에서 업데이트 또는 패치 작업을 한 번만 수행하면 변경 사항이 모든 컨테이너에 적용됩니다.

...

컨테이너는 마이크로서비스 아키텍처도 허용하므로 애플리케이션의 구성을 보다 미세하게 배치 및 스케일링할 스케일링수 있습니다.

(6) 보안격리

컨테이너는 격리된 환경에서 실행되기 때문에, 한 컨테이너에서 발생한 보안/장애 문제가 다른 컨테이너나 호스트 운영체제에 영향을 미치지 않습니다.

...

개발자와 시스템 관리자가 컨테이너로 애플리케이션을 개발, 배포 및 실행할 수 있는 플랫폼입니다.

...

2.1 도커 주요 컴포넌트

  • docker engine
    여러분 모두가 아는 그 엔진, 이 엔진

  • containerd / dockerd /cri-o
    container 런타임

  • runc
    Open Container Initiative (OCI) 규격에 맞게 컨테이너를 실행하고 생성하는 CLI 도구

...

정보
  • 이미지 빌드(도커 파일/도커 빌드).

  • 컨테이너 이미지(도커 이미지)를 관리합니다.

  • 컨테이너 생성, 삭제 및 관리(도커 실행, 도커 run, 도커 rum, 도커)

  • 컨테이너 이미지 공유(도커 푸시).

  • CLI를 사용하지 않고 사용자가 조작할 수 있는 UI를 제공합니다.

...