728x90
  • 도커란?

도커는 컨테이너 기술입니다.

컨테이너를 생성하고 관리하기 위한 도구입니다.

 

이렇게 말하면 쉽게 이해가 되지 않으며, 왜 써야 하는 지도 잘 모르겠다.

 

우선 소프트웨어 개발에서 컨테이너는 표준화된 소프트웨어 유닛입니다.

아래는 구글 클라우드에서 말하는 컨테이란?입니다.

https://cloud.google.com/learn/what-are-containers?hl=ko

컨터이너는 스프링부트를 사용해 봐서 알겠지만, 해당 코드와 종속성, 코드들이 포함되어 있다.

 

도커는 결국 이러한 컨테이너의 생성 및 관리 프로세스를 도와주는 도구이다.

결국 도커로 이 컨테이너를 만들고 관리하는 것이 목표가 될 것이다.

 

  • 컨테이너가 필요한 이유

왜 이렇게 개발에서 독립적인 표준화된 애플리케이션 패키지를 원하는 것일까?

이렇게 직접 작업한 로컬의 환경과 배포에서의 환경이 다른 경우가 생긴다.

Java 11에서는 사용하지 못하는 코드들이 있다면 문제가 될 것이다.

 

이러한 문제가 있기에 같은 개발 환경을 갖는 것은 상당히 중요한 문제이다.

이것을 도커의 컨테이너로 해결하는 것이다.

 

특정 버전을 도커 컨테이너에 Lock 할 수 있으므로, 코드가 항상 정확한 버전으로 실행되도록 할 수 있다.

애플리케이션이 자체적으로 필요한 버전을 제공하는 컨테이너에서 실행되게 된다.

 

또한 팀에서 작업을 하게 된다면

팀원 간에 작업 환경이 다르게 될 수도 있다.

그런 경우에도 문제가 생기지 않도록 같은 환경에서 실행될 수 있도록 한다.

 

또한, 혼자 작업을 하는 경우에도 문제가 될 수 있다.

이렇게 가지고 있는 프로젝트마다 버전이 다른 경우이다.

 

이런 상황에서도 컨테이너에 모든 환경이 속해있기 때문에 컨테이너만 바꾸면 문제없이 동작할 수 있게 된다.

 

  • 가상 머신 VS 도커

옛날에 가상머신으로 네트워크 공부했던 거 처럼, 그냥 가상머신에 각각의 환경을 만들어서 배포를 해도 독립된 환경을 만들어 줄 수 있기는 하다.

하지만 보통은 도커를 사용하게 되는 데, 이유에 대해 알아보자.

리눅스의 가상머신을 이용한다고 해보자.

 

이렇게 각 App마다 VM을 사용하게 되고, 이 Virtual OS는 메모리, CPU등의 사용량이 높다.

때문에 VM을 많이 사용할 수록 큰 오버헤드가 발생하게 된다.

 

도커를 사용할 때를 보자.

이 컨테이너에는 중요한 도구, 런타임이 추가되어 있지만 오버헤드가 큰 운영체제 등은 들어가 있지 않다.

컨테이너 내부에 작은 레이어가 포함되어 있을 수는 있지만, VM을 설치하는 것과는 비교도 안되게 가벼울 것이다.

또한 도커를 사용하면 이미지를 만들어 다른 사람과 공유하며, 모든 사람이 자신의 시스템에서 사용한 것과 같은 환경을 제공해 줄 수 있다.

+ Recent posts