HwangHub

도커는 왜 쓰나요? 본문

DEV-STUDY/Infra

도커는 왜 쓰나요?

HwangJerry 2023. 7. 22. 00:09

도커를 요즘 여기저기서 상당히 대중적으로 사용하고 있는데, 도대체 도커가 뭐길래 대다수의 회사에서 적용하고 있는 걸까요?

 

도커란 무엇인가?

도커는 프로그램을 실행하는 환경이 달라서 발생할 수 있는 이슈를 최소화하기 위해 도와주는 도구입니다. 즉, 도커를 활용하면 사용자가 프로그램을 실행하는 환경을 도커의 "이미지"와 "컨테이너"를 통하여 개발자의 의도에 맞게 실행 환경을 통제할 수 있게 됩니다.

 

다시 제대로 설명하자면, 도커는 "컨테이너"를 사용하여 어플리케이션을 더 쉽게 제작 및 배포, 실행할 수 있도록 도와주는 오픈소스 가상 플랫폼입니다. 따라서 "컨테이너"라는 개념을 이해할 수 있어야 합니다.

 

개발을 어느정도 하다보면 내 컴퓨터에서는 잘 되던 프로그램이 동일한 소스코드를 가지고도 다른 컴퓨터에서는 제대로 실행되지 않는 것을 종종 볼 수 있습니다. 이는 의존성 등의 실행 환경이 맞지 않아서 발생하게 되는데요, 이러한 이유로 선배 전산쟁이 분들은 하이퍼바이저 기반으로 게스트 OS를 가지는 가상 컴퓨터를 각자의 컴퓨터속에 하나 만든 뒤, 그 컴퓨터에 실행 환경을 갖춰놓고, 가상 컴퓨터를 통째로 다른 컴퓨터 속에서 실행하는 것을 꿈꿨습니다. 실제로도 한동안은 유행할 수 밖에 없었죠.

 

하지만 이는 로컬 OS와 독립적인 또 다른 OS 속에서 어플리케이션을 실행하는 것이기에 성능상 이슈도 존재하였고, 무겁다는 단점을 극복하기 어려웠습니다. 따라서 도커와 같은 컨테이너 플랫폼이 등장하게 됩니다. 도커는 단순히 말해서 컴퓨터의 OS 위에 "컨테이너"라는 가상 공간을 마련하고, 그 안에 실행 환경을 조성한 뒤 어플리케이션을 실행하는 것을 말합니다.

 

이렇게 되면 가상 머신처럼 무거운 OS를 들고있지 않아도 되면서, 가상 머신이 추구하던 "실행 환경 제어"를 이뤄낼 수 있었습니다.

 

도커 이미지와 컨테이너

컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어 표준 단위입니다. 쉽게 말해서, 어디서든 간단하고 편리하게 프로그램의 실행을 안정적이게 도와주는 장치라고 이해하면 됩니다.

 

이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등의 의존성 및 설정과 같은 어플리케이션 실행에 필요한 모든 것을 포함하고 있는 실행 가능한 소프트웨어 패키지입니다. 흔히 우리가 자바 프로그램을 build하면 생성되는 jar와 같다고 생각해도 괜찮을 것 같습니다.

 

이러한 도커 이미지는 도커 엔진을 활용하여 런타임에서 도커 컨테이너가 됩니다. 컨테이너화된 소프트웨어는 각 컴퓨팅 인프라에 독립적으로 항상 동일하게 실행됩니다. 따라서 모든 컴퓨팅 환경에서 균일하게 작동하는 것을 보장할 수 있게 됩니다.

 

'DEV-STUDY > Infra' 카테고리의 다른 글

Working Directory 명시하기  (0) 2023.07.23
도커 이미지 실행하기  (0) 2023.07.22
도커 이미지 생성하기  (0) 2023.07.22
도커 커맨드 분석  (0) 2023.07.22
도커 기본 사용 흐름 이해하기  (0) 2023.07.22
Comments