본문 바로가기

공부 자료/Kubernetes & Docker

[Docker] 도커의 동작 원리

도커의 구조

 

 

 

[ 도커의 구조]

- 물리 서버

- 물리 서버에서 동작하는 리눅스 운영체제

- 운영체제 위에 도커 엔진이 동작

- 그 위에 컨테이너가 동작

- 프로그램이나 데이터는 컨테이너 내부 존재

 


 

컨테이너 안에는 무엇이 들어있을까?

 

컨테이너 내부에는 프로그램이나 데이터가 존재한다고 이야기를 했었는데,

어떤 구조를 가지고 있고 어떤 것을 가지고 있을지 알아보고자 한다.

 

 

'정말로 텅 빈 컨테이너'는 잘 사용하지 않는다?

빈 컨테이너가 존재하기는 하지만 잘 사용하지 않는다고 하는데 이게 무슨 말일까?

 

 

모든 컨테이너는 리눅스 운영체제 비슷한 무언가가 들어있다.

- 기본적인 세팅으로 리눅스 운영체제와 유사한 것이 존재

- 리눅스 운영체제와 유사한 것일 뿐, 운영체제를 의미하는 것은 아님

- 텅 비어있는 것을 잘 사용하지 않는다는 것은 리눅스 운영체제와 비슷한 무언가가 들어있기 때문

 

* 운영체제란?

: 소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할

: 하드웨어는 지시받은대로만 수행하며, 구체적으로 지시하지 않으면 이해하지 못하기 때문에 이해할 수 있도록 운영체제가 풀어서 지시

Ex) 귤을 먹어라(소프트웨어) >> 테이블 왼쪽 아래 모서리에 위치한 귤을 들고 껍질을 까 알맹이를 먹어라(운영체제) >> 하드웨어가 동작

: 운영체제는 커널이라는 부분과 그 외의 주변 부분으로 나뉨

 

 

[구조 비교]

- 일반적인 리눅스 컴퓨터

: 소프트웨어 >> [주변 부분 [커널] ] >> 하드웨어

 

- 도커

: [ 컨테이너 [ 소프트웨어 ] >> 리눅스의 주변부분 ] >> 도커 엔진 >> 커널 >> 하드웨어

: 도커에서는 컨테이너가 완전히 분리되어 있어 리눅스 운영체제의 주변 부분이 컨테이너 속 프로그램의 명령을 전달 받을 수 없음

: 컨테이너 내 운영체제의 주변 부분이 들어있어 명령을 전달받고 커널에 전달

: 커널은 빌려쓰는 형태로 있어 도커의 특징인 가벼움을 얻을 수 있음

 


 

도커는 기본적으로 리눅스 용

 

- 도커는 기본적으로 리눅스 운영체제에서만 동작

- 리눅스 운영체제가 동작하는 것을 전제로 되어 있기 때문

 

즉, 도커는

- 리눅스 컴퓨터에 독립된 격리 환경을 만드는 것

- 리눅스에서만 동작

- 컨테이너에서 동작할 프로그램도 리눅스용 프로그램

 

 

그렇다면, 윈도우와 맥 OS에서도 사용 가능하다고 했던 이야기는 뭘까?

 

도커는 리눅스 운영체제에서만 동작한다고 했기 때문에 윈도우와 맥OS 환경에서 사용할 수 없어야 하지만, 사용할 수 있는 방법이 존재

 

방법1.

- 가상 환경 위에 리눅스 운영체제를 설치

- 그 위에 도커를 실행

 

방법2.

- 윈도우용 또는 맥OS용 도커 데스크톱처럼 도커를 실행하는데 필요한 리눅스 운영체제를 포함하는 패키지를 설치

 

 

즉, 도커를 사용하기 위해서는 리눅스 운영체제를 갖춰야 한다.