Docker란? (도커의 특징)

원본 글입니다~~

운영 환경

이전 포스트에서는 서버의 관점에서 Docker의 등장을 지켜봤다. 이번 포스트 에서는 운영의 관점에서 Docker의 등장을 지켜보자.

우리가 어플리케이션을 구성해서 운영하는 환경은 기본적으로 3가지다.

  1. BareMetal: 물리 서버를 사내에 두고 사용하는 방식
  2. Vitualization: 가상화 기술, 가상머신을 사용하는 방식
  3. Container: 컨테이너 기술을 사용하는 방식

베어메탈? 베어메탈!

BareMetal 방식도 하드웨어 자원이 받쳐준다면 굳이 Vitualization을 사용하지 않고도 여러 어플리케이션을 운영할 수 있을까?

가능하다.

하지만 그렇게 하지 않았다. 왜 그럴까?

OS입장에서 우리가 구동하는 앱은 하나의 프로세스다. 만약 하나의 프로세스에 문제가 생기면? 모든 프로세스가 한정된 자원을 공유해서 사용하기 때문에 다른 프로세스에도 영향이 간다. (가끔 작동안되는 프로그램을 강제 종료하려고 작업관리자를 키면 CPU 대부분을 점유하는 것을 확인할 수 있다)

하지만 가상화 환경에서는 문제가 생긴 OS에서 모든 일이 끝난다. 때문에 다른 OS에는 영향을 주지 않는 것이다. 그렇기에 가상머신이 각광받게 되었다.


가상머신? 가상머신!

하지만 가상머신도 여러 문제가 있었다.

https://velog.velcdn.com/images/yeongori/post/565874d7-585c-4754-a769-42ad3814722d/image.png