Docker가 먼가요? - 1. Docker란? Container란?

1. Docker란?

  • Docker는 리눅스 컨테이너 기술을 기반으로 하는 오픈 소스 가상화 플랫폼

2. Container(컨테이너) vs Virtual Machine(가상머신)

  • Virtual Machine :
    • 하드웨어 가상화
    • 소프트웨어로 구현된 하드웨어
    • 소프트웨어로 구현된 하드웨어 그 위에 OS를 설치하고, 그 위에 소프트웨어를 설치함으로써 무겁고 느린 단점
    • 위 단점으로 반가상화 기술방식의 Xen이 등장하였지만, 성능문제는 해결되지 못함
    • 예 : VMWare, VirtualBox 등
  • Container:
    • 리눅스에서 하드웨어 가상화와 OS설치를 하지 않고 단순히 프로세스를 단독으로 격리시키는 기술 컨테이너라는 기술이 등장
    • 하드웨어 및 OS 계층을 두지 않고 프로세스만 격리하므로 실제 그냥 앱을 실행하는 경우와 거의 차이가 보이지 않을 정도로 Virtual Machine 에 비해 성능문제가 해결됨
    • 리눅스 OS에서 지원하는 기술로 LXC(Linux Container)라는 시스템 레벨의 컨테이너 기술을 제공
    • 초기 Docker는 LXC 기술을 채용했으나, 0.9버전 이후에는 libcontainer라는 자체 컨테이너 사용

3. Docker 실행환경별 차이점

  • Linux : 리눅스 컨테이너 기술을 기반으로 하기 때문에 Native 하게 지원됨

  • Mac & Windows : 내부에 경량의 Linux 가상머신을 띄운 후에 실행됨,(Mac에서는 xhyve, Windows에서는 Hyper-V가 내부에서 실행됨)

  • Windows : 리눅스 컨테이너와 Win32 네이티브 컨테이너를 함께 가지고 있으며 선택할 수 있음.