Docker

[Docker] 1. 도커(Docker)의 개념과 이해

Yoon 2021. 11. 7. 15:20

도커(Docker)란?

도커는 가상의 하드웨어 위에 운영체제를 구축하는 가상화 방식과는 달리

리눅스의 프로세스 격리 기술(Cgroup, Namespace)을 통해 특정 공간안에 프로세스를 동작 할 수 있는 컨테이너를 생성하여 그 컨테이너안에 응용프로그램들을 설치하여 관리하고 실행할 수 있게 해주는 가상화 플랫폼을 말함


일반적인 의미로 컨테이너는 다양한 물품들을 실을 수 있는 상자로 뜻할 수 있는데,

서버 관점에서의 컨테이너도 다양한 프로그램이나 실행환경을 컨테이너에 담고(추상화) 동일한
인터페이스를 제공하여 프로그램의 배포 및 관리의 편의를 제공하거나 조립PC, AWS 등 어디에서든
실행할 수 있는 환경을 제공함.


가상화 방식의 차이


컨테이너는 격리된 공간에서 프로세스가 동작하는 기술. 가상화 기술 중의 하나이다.

이전의 가상화 방식은 VMware나 VirtualBox를 이용하여 Host OS위에 Guest OS를 가상화하여 사용하는 방식인데, 한 물리적 컴퓨터안에 각각 OS를 가동하는 가상 컴퓨터들이 물리적 자원을 분할해서 쓰기 때문에 성능의 한계가 생기게됨.

도커는 실행환경만 독립적으로 돌리는 방식이라 컴퓨터에 직접 설치해서 사용하는거랑 성능차이가 별로 없다.

가상머신과 DOCKER의 아키텍쳐


가상머신의 Hypervisor란 운영체제 위의 가상의 하드웨어를 구성하여 그 위에 운영체제를 구현해주는 기술.


도커는 리눅스의 네임스페이스 Cgorup과 같은 커널 기능을 사용하여 Hypervisor을 사용하지 않고 가상화 할 수 있음.


리눅스 컨트롤 그룹(Control Group)

Cgroup은 CPU나 메모리, 네트워크 대역대, 디바이스 등 같은 리소스를 제한할 수 있는 가상화 환경을 지원하고있음.
독립된 환경에서 프로세스로 소비할 수 있는 리소스 양을 제어할 수 있음.


리눅스 네임 스페이스(NameSpace)

파일이나 네트워크 인터페이스를 가상화해서 자기만의 것을 가질 수 있음.
프로세스당 어떤 공간을 할당하여 프로세스 간 접근하지 못하도록 해서 파일 시스템이나 네트워크 인터페이스를 별도로 관리할 수 있게됨.


도커 사용 추천 OS

리눅스에서 도커는 컨트롤 그룹과 네임스페이스를 이용하여 리눅스에서의 가상화를 이루어주고 있음

윈도우에서 도커를 사용할때는 Hypervisor를 사용하여 가상화를이룸.(리눅스 커널 제공?).

도커는 Hypervisor를 이용하지 않기위해 사용하는 것이기에 리눅스 환경에서 사용하는 것을 추천.