Docker에 대해서

2020-01-20

도커란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

Docker의 사전의미

항만 노동자. 항구에서 컨테이너를 나르는 것을 생각하자.

IT에서 말하는 도커가 최근 빠르게 발전하는 기술로서 유명해진 이유는 바로 컨테이너 기반이기 때문이다!

도커 설명을 위해 아래 그림을 보자. docker

  1. 고래 등에 올려진 컨테이너 박스들처럼 프로그램과 실행에 필요한 것들을 컨테이너에 실어둔다.
  2. 손쉽게 이동한다.
  3. 이를 통해 어디서나 간단하게 실행할 수 있는 도구와 환경을 제공한다.

클라우드 플랫폼에 적용하여 자동 확장이 가능하게 하고 서비스를 확장할 수 있다.

이미지란 특정 프로세스를 실행하기 위한 환경

컨테이너란
호스트 운영체제의 커널을 공유하면서 컴퓨팅 자원을 제공하는 os 가상화 기술이다. 이미지가 실행된 상태.


VM(가상머신)과 도커(docker)의 차이

DockerandVM

가상머신은 Hypervisor(하이퍼바이저)를 통해 가상화를 제공한다. 하드웨어를 가상화 하고,그 위에 GuestOS가 올라간다. 원래 컴퓨터 OS(호스트 OS)위에서 독립된 게스트OS가 돌아가기 때문에 용량이 커지고 실제 호스트 머신에 비해 훨씬 느리다.

게스트 OS안에 항상 운영체제를 설치해야 한다.

반면 도커는 하이퍼바이저 없이 실행되는 가상화 솔루션이다. 즉, Guest 운영체제를 설치하지 않고 Docker-engine위에 애플리케이션 실행에 필요한 바이너리만 올라가기 때문에 가상머신보다 훨씬 가볍고 빠르다.

도커의 컨테이너 이미지에는 운영체제가 포함되지 않는다. 운영체제의 자원은 호스트의 자원을 그대로 이용한다.(Host OS를 공유)

이렇게 되면 이미지 용량이 매우 줄어들게 되고, 그만큼 네트워크를 덜 쓸 수 있어 빨라지고 배포에도 부담이 없게 된다.

host가 하나가 아니라 Clustering 환경(여러 host를 하나의 컴퓨터처럼 사용)에서 배포할 경우도 VM으로 배포한다 생각하면 답답할 것이다.


도커의 특징

  • 리눅스 컨테이너 기술을 바탕으로 애플리케이션을 격리된 상태에서 실행하는 가상화 솔루션
  • 호스트의 운영체제를 공유해 필요한 최소한의 리소스만 할당받아 동작하기 때문에 가볍다.
  • 플랫폼에 상관없이 실행될 수 있는 애플리케이션 컨테이너를 만들기 때문에 환경을 구축하는 것이 비약적으로 편해진다.
  • git에서 소스 코드를 올리고 받는 기능과 같이 push/pull 기능을 사용해 이미지를 올리고 받을 수 있다.

참고

도커/쿠버네티스를 활용한 컨테이너 개발 실전입문

https://sarc.io/index.php/cloud/728-what-is-docker

https://www.botmetric.com/blog/containerized-application-deployment-aws-docker-cloud/

Kyuling Company

https://medium.com/@darkrasid/docker%EC%99%80-vm-d95d60e56fdd