본문 바로가기
  • This is Russell - the most handsome and the smartest.
공부 중 메모

Docker_01_Container

by sundelion 2022. 3. 16.

0. 도커란?

IT 소프트웨어 도커는 Linux 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다.
도커는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈소스 프로젝트이다.

1. Linux: 컨테이너

실행에 필요한 모든 파일을 포함하여 전체 실행 (runtime) 환경에서 어플리케이션을 패키지화하고 분리하는 기술이다.
이를 통해 전체 기능을 유지하면서 컨테이너화된 어플리케이션을 환경(개발, 테스트, 생산 등) 간에 쉽게 이동할 수 있다.
Linux container is a set of 1 or more processes that are isolated from the rest of the system.
All the files necessary to run them are provided from a distinct image, meaning Linux containers are portable and consistent as they move from development, to testing, and finally to production.

Linux 컨테이너는 가상화 기술이다. 리눅스 커널 (운영체제) 을(를) 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다. 

하드웨어를 가상화 하는 VM 과 다르게 커널을 공유하기 때문에 실행 속도가 빠르고 성능상의 손실이 거의 없다.

  • 도커의 경우, 기본 네트워크 모드는 Bridge 로 약간의 성능 손실이 존재한다.
  • 만약, 네트워크의 성능이 중요하다면 --net=host 옵션을 고려할 수 있다.

컨테이너로 실행된 프로세스는 리눅스 네임스페이스 (Linux namespace), 컨트롤 그룹 (cgroup), 루트 디렉터리 격리 등의 커널 기능을 활용해 격리된다.

이러한 이유로 호스트 머신(e.g. 당장 이 글을 읽는 당신 앞에 보이는 컴퓨터) 에게는 프로세스로 인식되지만, 컨테이너 관점에서는 마치 독립적인 환경을 가진 가상 머신처럼 보인다.

2. Virtualization 과 Container

Virtualization 의 경우, Hypervisor 를 통하여 리소스를 VM 전용으로 할당될 수 있도록 파티셔닝 한다. VM 은 실제 서버처럼 보이고 작동하므로 어플리케이션 종속성 및 대규모 OS 설치 공간의 단점을 중대시킬 수 있다.

 

Container 의 경우, 각 컨테이너는 하나의 운영체제 (kernel) 를 공유하고 시스템의 나머지 부분으로부터 어플리케이션 프로세스를 격리한다.

Hypervisor - 가상머신을 생성하고 구동하는 소프트웨어. 예) Oracle VirtualBox, KVM

image from Red Hat

3. Container 의 종류

3-1. 시스템 컨테이너

컨테이너 기술들을 사용해 운영체제 위에 하드웨어 가상화 없이 운영체제를 실행한다.

일반적인 리눅스처럼 init 프로세스 등을 사용하여 여러 프로세스가 같은 환경을 공유하는 것이 목적이다.

e.g. LXC, LXD

3-2. 어플리케이션 컨테이너

컨테이너 기술들을 사용해 하나의 어플리케이션(프로세스)를 실행하는 것이 목적이다.

독립적인 환경을 갖는다는 점에서 시스템 컨테이너와 같지만, 하나의 프로세스만 실행된다는 점에서 확장이 쉽고 관리 요소가 거의 없다.

Docker 의 경우, 새로운 컨테이너를 구축할 때, 계층 (레이어) 들을 재사용하므로 구축 프로세스가 빠르다. - 02 에서 계속 -

e.g. Docker

 

Docker 는 초기에는 lxc 라이브러리를 사용했지만 현재는 자체 라이브러리인 libcontainer 를 사용한다 - 02 에서 계속 -

image from redhat

4. Why Docker?

여러 서버를 하나의 서버에 컨테이너를 이용하여 격리시켜 구축할 수 있다.

컨테이너를 이미지화 시켜 빠르게 배포 가능하다.

개발환경, OS 에 구애받지 않아도 된다.

'공부 중 메모' 카테고리의 다른 글

ARIMA 와 나머지들  (1) 2024.08.01
자꾸 까먹어서 정리하는 NatsIO - python  (1) 2022.04.20
Nvidia DeepStream(1) - [to do]  (3) 2022.03.23

댓글