2023.03.23 - 반려고래 Docker 분양합니다

최지원2023. 3. 22. 23:41

안녕하세요, OS술사입니다.

앞으로 운영체제 게시글을 올리겠다고 약속을 드렸지만 

.

.

.

 

 

어쩌다보니 교수님 두 분께서 도커 기미상궁을 바라셔서

이번 주는 도커 게시글입니다

 

항상 이해해주셔서 감사하고 오늘은 가볍게 무엇인지 알아보도록 할게요

 

 


Docker란 무엇일까?

Docker의 개념
 
- 개발자(developer)와 시스템 관리자(sysadmin)를 위한 플랫폼

 - 컨테이너(container)를 통하여 애플리케이션의 개발, 배포, 실행을 도와줌

 

Docker의 정체성이자 컨셉, 주요 개념은 '컨테이너'라고 할 수 있습니다.

도커는 애플리케이션의 컨테이너화를 도와주는 플랫폼 정도로 간단하게 이해하고 넘어가도 좋습니다.

 

 

하지만 다음으로 소개드릴 컨테이너(Container)와 이미지(Image)에 대한 내용은 관심 있게 볼 필요가 있답니다.

 


 

이미지(Images)와 컨테이너(Containers)

 

컨테이너는 이미지를 running 시키는 것으로 실행됨.

이미지는 애플리케이션이 구동되기 위한 모든 것들이 포함된 실행 가능 패키지
        - 코드, 런타임 패키지, 라이브러리, 환경 변수 등이 포함 되어 있는 읽기 전용 템플릿

 컨테이너는 이미지의 런타임 인스턴스로, 실행 되어 메모리로 넘어온 상태의 이미지를 의미한다.
       - 컨테이너(이미지 인스턴스)는 필요에 따라 시작, 중지, 삭제 가능

 동일한 이미지로 여러 개의 컨테이너를 생성할 수 있으며, 컨테이너가 삭제 되어도 이미지는 유지됨.

 

이전부터 개발자들은 각 애플리케이션(응용 프로그램)들이 서로 간섭을 주지 않도록 독립된 환경을 구축하는 것에 관심이 많았습니다.

저희가 가상화! 하면 가장 먼저 떠오르는 VM(가상머신)도 이러한 고민을 해결하기 위하여 나오게 되었는데요.

 

애플리케이션마다 독립된 환경을 제공을 목적으로 한다는 점에서 VM과 컨테이너는 비슷하다고 말할 수 있죠.

그래서 그 환경을 구축하기 위한 코드... 런타임 패키지... 라이브러리... 환경 변수 등의 정보는 이미지에 담겨있고

저희는 컨테이너에서 해당 환경을 구축하여 그 위에서 애플리케이션을 실행하는 것이지요.


Docker와 가상머신(VM)의 차이점

VM vs Docker

위에서 도커와 가상머신은 비슷하다고 말하였는데 그렇다면 차이점도 존재하겠죠?

가장 큰 차이점은 게스트 OS의 유무입니다.

 

가상머신은 생성할 때마다 새로운 게스트 OS를 만들어야 하기 때문에 OS를 위한 자원 할당이 요구됩니다.

반면에, 도커는 호스트 OS를 공유하기 때문에 게스트 OS가 필요 없고 OS를 위한 자원 할당의 부담이 줄어들게 되죠!

 


Docker 컨테이너의 필요성

 

도커의 알파이자 오메가인 컨테이너!

조금만 더 자세히 알아볼까요?

 

직접 공부하며 컨테이너 개념이 도입되기 전과 후의 차이점을 아래와 같이 정리해보았습니다.

 

 

 

컨테이너화 개념 도입 이전

애플리케이션들이 서로 격리된 상태에서 동작되기를 원함 -> 애플리케이션을 별도의 가상 머신 위에 배치

 

기본적으로 가상 머신의 크기가 매우 크며, 여러 가상 머신을 실행할 경우 성능 및 안정성의 확보가 힘듦

 

 

 

컨테이너화 개념 도입 이후

호스트 운영 체제를 사용하므로 게스트 운영 체제가 필요 없음 -> 크기 감소

 

필요할 때만 관련 라이브러리 및 자원을 공유하면 되기 때문에 실행 속도가 이전보다 빠름

 

모든 컨테이너가 동일한 운영체제, 호스트 운영 체제를 공유하기 때문에 부팅 프로세스가 빠름

 


오늘은 도커의 기본적인 개념들에 대해서 정리해보았습니다.

특히, 컨테이너가 도커의 컨셉인만큼 비중있게 다루어보았는데

 

다음에는 Docker 파일과 실제 사용하는 방법을 예제로 다루어 보겠습니다!

 

 

 

....어 그래서 운영체제는 언제 하냐고요..?

 

...음

 

 

어.....

 

 

 

네~!

이상으로 이번주 모각코를 마치겠습니당~ 감사합니다 :)