1 분 소요

Docker

Docker란 컨테이너를 이용한 오픈소스 가상화 플랫폼이다.
컨테이너는 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 것을 말한다. OS자체를 가상화 하던 방식과는 다른데 무슨 차이가 있는것일까?

VM 가상화 vs Docker 가상화

VM

  • 기존에는 하나의 서버에 하나의 어플리케이션만 구동시켰다.
    • 이는 남는 자원이 많아진다.
    • 이를 극복하기 위해 나온것이 가상화다
  • 하이퍼바이저 기반의 가상화가 많이 이용됐다.
    • 논리적으로 분리된 공간에서 VM이라는 독립된 가상환경 만든다.
    • 그리고 호스트 시스템에서 VM에 게스트 OS를 구동 및 모니터링 한다.

imageVM 구조

Docker

  • Docker은 Guest OS가 필요없다.
    • Host OS의 커널을 공유하기 때문이다.
  • 가상화를 할 때마다 OS를 할당해주면 자원 낭비가 된다.
  • 그래서 Container라는 개념으로 필요한 기능을 모듈화 시켜뗏다 붙여다 하는 식으로 운영이 가능하다.
  • Docker의 컨테이너들은 리눅스 OS를 이용한다.
    • Host OS가 윈도우나 맥이면 어떻게 하는 것인가?
    • WSL 같은 리눅스환경 VM을 사용한다.

image

차이점 요약

1. VM은 하이퍼 바이저 기능을 이용해 Guest OS를 할당한다.
2. Docker은 Host OS의 커널을 공유해 사용한다
3. VM은 새 환경을 구성할 때 마다 새로운 OS를 다운받아야하지만 Docker은 컨테이너를 늘릴 때마다 OS를 다운할 필요없어 자원 효율성이 더 좋다.

사용하는 이유

개발환경 구성

개발하고 서버에 올리면 끝인 상황이다. 그런데 서버에 올리면 작동 하지 않는 경우가 있다.왜 그런가 알아보니 컴퓨터 윈도우, 서버는 리눅스라는 각각 다른 OS를 사용하여 발생하는 오류였다. 각 OS마다 호환되는 기능이 다르기에 발생하는 문제였다.



하지만 도커를 사용하면 다른 머신에서도 같은 환경 구성이 가능하다.
방법은 간단하다 윈도우, 서버에 둘다 Docker 설치하고 구성하고 싶은 환경 설정하면 된다.


도커는 파일을 읽고 필요한걸 다운 받고 같은 환경을 컨테이너에 구성한다.
그래서 컴퓨터에서 서버로 코드 업로드하면(Docker와 같이) 잘 작동 한다.


또 각 컨테이너는 각기 분리되어 있다.컨테이너들은 독립적이다. 이덕에 한개의 서버에서 수많은 컨테이너 가질 수 있다. 만약 자바 애플리케이션이 인기 많으면 자바 컨테이너 늘리고 사용자가 줄면 컨테이너를 줄임으로써 매번 서버를 사고 팔 이유가 없어진다.


사용하는 이유 요약

1. 원하는 개발 환경을 파일에 저장하면 어떤 머신에든 해당 환경 구성해준다.
2. 각 환경을 독립적이기 때문에 무슨 환경이든 모듈식 관리 가능하다.



댓글남기기