<aside> 💡 ~ for mirae 4편 도커

</aside>

도커란?

도커는 컨테이너 기술을 기반으로 한 일종의 가상화 플랫폼이다. 가상화란 물리적 자원인 하드웨어를 효율적으로 활용하기 위해서 하드웨어 공간 위에 가상의 머신을 만드는 기술이고, 컨테이너란 컨테이너가 실행되고 있는 호스트 os의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술을 뜻한다.

다시 말하자면, 도커는 독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술! 이라 할 수 있다.

독립된 환경?

Untitled

도커는 이런 컨테이너에다 필요한 것만 담아서 구동 한다 즉 필요한 자원만 활용하게 되어 매우 효율적이다.

컨테이너 안에는 애플리케이션을 구동하는데 필요한 라이브러리 및 실행파일만 존재하기 때문에 컨테이너를 이미지로 만들경우 용량이 대폭 줄어든다.

도커의 장점

예를 들어, 어떤 프로젝트는 스프링으로 되어있고, 또 다른 어떤 프로젝트는 NodeJS로 되어있다고 해보면 어떨까?

자바를 깔고 노드를 깔고 프로젝트를 깃허브에서 받아와 구동시키며 라이브러리 버전을 맞추고 오류나면 다시 버전을 확인하고 충돌도 막아야하며 매우 많은 작업을 개발자가 수행해야한다 말로만 들어도 매우 비효율 적인걸 알 수 있다.

그럼 도커를 활용하면 어떤 장점이 있을까?

  1. 가장 큰 장점은 역시 애플리케이션 독립성이다. 호스트 OS와도, 다른 컨테이너와도 독립된 공간을 보장받을 수 있기 때문에 충돌 발생 염려가 전혀 없다.
  2. 또한 컨테이너 내부에 작업을 한 후에 배포하려고 한다면 도커 이미지라는 패키지로 만들어서 운영서버에 전달만 하면 된다. 즉, 배포가 쉬워진다.
  3. 모놀리식 애플리케이션 방식에서 마이크로서비스 구조로 변화가 쉽다. 즉, 컨테이너 하나당 하나의 기능만을 제공하는 모듈로 만들어서 부하가 많은 모듈은 여러개 더 만들고 하는 조정이 가능해진다.

컨테이너 이미지 하나면 어디서든 도커를 작동할 환경만 된다면 프로젝트 세팅을 아주 간단하게 할 수 있다.