Docker란?

1834 단어 도커

[Docker] 개념.



Docker는 Go 언어로 만든 리눅스 컨테이너 기반의 오픈 소스 가상화 플랫폼이다.


가상화를 사용하는 이유는?



향상된 컴퓨터의 성능을 보다 효율적으로 사용하기 위해 가상화 기술이 많이 등장했다.
서버 관리자의 입장에서는 CPU 사용률이 10%대로 밖에 되지 않는 활용도가 낮은 서버 리소스의 낭비가 될 수밖에 없다.
그렇다고 해서 모든 서비스를 하나의 서버 안에 넣으면 안정성에 문제가 생길 수 있다.
그래서 안정성을 높이고 리소스도 최대한 활용할 수 있는 방법으로 나타난 것이 서버 가상화이다.
여러분이 아는 대표적인 가상화 플랫폼으로 VM이 있습니다.

컨테이너란?




컨테이너는 가상화 기술의 하나로서 대표적으로 LXC(Linux Container)가 있다. 기존 OS를 가상화시킨 것과 달리 컨테이너는 OS 레벨의 가상화로 프로세스를 격리하여 동작하는 방식으로 이루어진다.
한 서버의 여러 OS를 가상화하여 사용하는 것과 컨테이너 방식으로 프로세스를 격리하여 동작하는 것과는 어떤 차이가 있는가?

VM 가상화 플랫폼 vsDocker 가상화 플랫폼



기존의 우리에게 익숙한 VM의 경우는, HostOS 위에 가상화시키기 위한 Hypervisor 엔진, 그리고 그 위에 GuestOS를 올려 사용한다.
이것은 가상화된 하드웨어 위에 OS가 타는 형태로 거의 완벽하게 Host와 분리된다고 생각할 수 있다.
반면 컨테이너 기반의 가상화는 Docker 엔진 위에 Application 실행에 필요한 바이너리만이 오르게 된다.
OS 가상화를 보면 Host OS와 완전히 분리되는 이점은 있지만 OS 위에 OS를 태우기 위해 무겁고 느려야 할 수는 없지만 컨테이너 기반 가상화는 Host OS 그리고 Docker 엔진에서 바로 작동하고 Host 커널을 공유합니다.
커널을 공유하면 io처리가 간단해져 성능의 효율을 높일 수 있다.
컨테이너를 사용하는 것은, 가상 머신을 생성하는 것이 아니라, HostOS 가 사용하는 자원을 분리해, 다양한 환경을 만들 수 있도록 하는 것이다.

컨테이너 기반은 OS 가상화보다 우수하다고 알려져 있지만 반드시 그런 것은 아니다.

OS 가상화는 컨테이너 기반 가상화보다 높은 격리 수준을 지원합니다.
이것은 보안 측면에서 더욱 유리하다.
또한 OS 가상화 커널을 공유하지 않는 이점도 있다.
커널을 공유하지 않기 때문에 멀티 OS가 가능하다.
커널을 공유하지 않기 때문에 멀티 OS가 불가능하다는 것은 Linux상에 Window를 올릴 수 없다는 단점이 있다.
그럼에도 불구하고 왜 Docker를 사용하는 이유는 성능 향상, 뛰어난 이식성, 쉽게 Scale Out을 할 수 있는 유연성이다.

좋은 웹페이지 즐겨찾기