홍카나의 공부방

[Docker] Docker를 사용하는 이유 본문

Data Engineering/Docker

[Docker] Docker를 사용하는 이유

홍문관카페나무 2023. 6. 25. 15:53

Docker를 사용하는 이유는 여러가지가 있겠지만,

핵심적인 이유 중 하나는 "내가 만든 프로그램이 다른 컴퓨터에서는 돌아가지 않는다면?"

이 물음에 대한 해결을 하기 위함이 가장 클 것이다.

 

다른 컴퓨터에서 돌아가지 않는 이유도 많을 텐데,

 

1. 운영체제 이슈 등으로 환경 설정이 제대로 되지 않았거나 ( 혹은 못하거나 )

2. 라이브러리 dismatching이 생기거나

3. 설치 과정이 제대로 진행되지 못하거나

 

이런 이유들로 프로그램이 다른 컴퓨터에서 모두 실행됨을 보장하지 못한다.

이를 해결하기 위해서 virtual machine, docker 등이 등장했다.

 


Docker는 나의 프로그램, 컴퓨터 환경을 패키징 및 배포하여 그대로 사용하기 위한 Container 기술이다.

패키징 된 프로그램 모음집은 다른 컴퓨터에서 그대로 사용할 수 있을 것이다.

 

Docker Image와 Container

 

위 그림처럼 여러 환경들(바이너리 파일, 라이브러리, 어플리케이션)을 한꺼번에 묶은 Docker Image를

Docker Engine상에서 독립적으로 실행한 것을 Docker Container라고 한다.

Docker Container에서 실행되는 프로그램은 Host 컴퓨터의 운영체제 등에 상관없이 일관되게 실행된다.

 

이처럼 Docker의 목표는 SW를 일관되게 빌드하고, 실행하고, 배포하기 위해 만들어진 것이다.

 


Virtual Machine과 Docker Container가 주로 비교된다.

차이점에 대해 간단하게 이야기 해보자면,

 

가상 머신은 하드웨어를 추상화하여, 한 컴퓨터 위에 다른 컴퓨터를 올리는 것과 같다.

즉, 가상 머신은 자신만의 OS를 필요로 한다. ( 리눅스면 리눅스, 윈도우면 윈도우... )

AWS의 EC2가 대표적인 클라우드 가상 머신 서비스다.

 

Docker 컨테이너는 컨테이너만의 독립된 OS를 따로 필요로 하지 않고,

자체적인 리눅스가 돌아가는 Docker Engine 위에서 독립적으로 실행된다.

 

host OS가 맥, 윈도우, 리눅스 등 어떤 운영체제냐와 상관 없이

host 실행 환경과 분리된 독립된 실행 환경을 제공하기 때문에

리눅스 기반 application이면 Docker 위에서 모두 돌아간다.

 

VM vs Docker

 


 

반응형