[Docker] 컨테이너 가상화
본 내용은 인프런의 데브위키님 강의 “개발자를 위한 쉬운 도커” 내용을 바탕으로 정리한 내용입니다.
컨테이너 가상화
- 가상화 기술 중 하나로 현대 애플리케이션 운영 환경에서 하이퍼바이저 방식보다 더 선호되는 가상화 기술이다.
-
컨테이너 가상화 방식은 하이퍼바이저 가상화 방식보다 더 빠르고, 더 가볍다는 장점이 있다.
⊙ ⊙ ⊙
컨테이너 가상화 방식의 특징
- 하이퍼바이저 방식에서는 격리된 공간을 만드는 역할을 하이퍼바이저 소프트웨어가 했지만 컨테이너 가상화 방식에서는 그 담당을 커널 자체가 한다.
컨테이너 가상화는 리눅스 커널이 제공하는LXC라는 자체 격리 기술에서 발전했다.- 커널의 LXC 기술을 사용하여 만들어진 격리된 공간을
컨테이너라고 부른다. 컨테이너 가상화는 리눅스 커널이 제공하는LXC(Linux Containers)라는 자체 격리 기술에서 발전했다.- LXC는 리눅스 커널의
네임스페이스(namespaces)와c그룹(cgroups)기술을 기반으로 한다.namespaces는 프로세스를 격리된 환경에서 실행할 수 있게 해준다.cgroups는 프로세스의 리소스 사용을 제한하고 관리한다.
- 커널의 LXC 기술을 사용하여 만들어진 격리된 공간을
컨테이너라고 부른다. - 현대의 도커는 초기 버전의 LXC 대신 자체적인
containerd와runc를 사용한다.containerd는 컨테이너의 전반적인 생명주기를 관리하는 고수준 런타임이다. 도커 데몬과 저수준 런타임(runc) 사이의 중간 계층이다.runc는 실제로 리눅스 커널의 격리 기능(namespaces, cgroups)을 사용하여 컨테이너를 생성하고 실행하는 저수준 런타임이다.
- 이러한 컨테이너는
호스트 OS의 커널을 공유하면서도독립된 실행 환경을 제공한다. - 컨테이너들은 각각의 독립된 커널이 없기 때문에 커널 간의 통신을 할 필요가 없어져
오버헤드가 적고(가볍고), 컨테이너의실행 시간이 빠르다. -
단 컨테이너는 호스트OS의 커널을 공유하기 때문에 다른 종류의 OS를 실행할 수 없다.
⊙ ⊙ ⊙
도커가 필요한 이유
- 커널이 자체적으로 제공하는 가상화 기술은 사용자가 직접 컨트롤하기 어렵다.
도커(Docker)는 이 커널의 컨테이너 가상화 기술을 편리하게 사용하기 위해 만들어진 스프트웨어이다.-
사용자는
도커(Docker)를 통해서 컨테이너를 만들고 운영할 수 있다.
댓글남기기