본문 바로가기
책곡책곡/그림과 실습으로 배우는 도커 & 쿠버네티스

CHAPTER 2-1. 도커의 동작 원리

by 몌으니 2024. 10. 12.
그림과 실습으로 배우는 도커 & 쿠버네티스 (위키북스)

2장 - 도커의 동작 원리

도커의 구조

일단 물리 서버가 있고, 그 물리 서버에서 동작하는 리눅스 운영체제가 있다.

여기까지는 일반 서버와 다를 바 없다.

 

일반적인 서버라면 운영체제 위에 프로그램이나 데이터가 직접 올라가겠지만,
도커를 사용하는 경우에는 운영체제 위에 도커 엔진이 동작하고 그 위에서 컨테이너가 동작한다.
프로그램이나 데이터는 컨테이너 안에 위치한다.

 

컨테이너 안에는 운영체제 '비슷한 것'이 들어있다

컨테이너 안은 어떤 구조로 되어있을까?

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

(술집에서 아무것도 주문하지 않아도 기본 안주가 나오는 것 처럼 최소한의 컨테이너에도 '리눅스 운영체제 비슷한 무언가'가 딸려 나온다.)

'리눅스 운영체제 비슷한 무언가'는 실제 운영체제가 아닌 정말 비슷한 무언가이기 때문이다.

 

운영체제가 하는 일은 뭘까?

운영체제는 소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할을 한다.

하드웨어는 자신의 판단으로 여러 의미 중 적절한 것을 고르거나 적당히 일을 할 수 없고, 지시받은 대로만 수행할 수 있기 때문에 세세한 동작 하나하나를 지정해주지 않으면 안된다.

테이블 위에 귤이 하나 있을 때 '귤을 먹어라' 라는 명령으로,
사람은 아무 어려움 없이 명령을 수행할 수 있지만 
하드웨어는 '테이블 오른쪽 상단에 위치한 귤을 손에 쥐고 껍질을 벗겨 알맹이를 먹어라'와 같이
구체적으로 지시하지 않으면 이해하지 못한다.

 

이처럼 운영체제는 '귤을 먹어라' 수준 정도의 명령어를 번역해서 하드웨어에 전달한다.

 

그럼 도커 엔진 아래에도 리눅스 운영체제가 있는데, 왜 컨테이너 속에 또 리눅스 운영체제 비슷한 것을 넣을까?

본래 운영체제는 커널과 그 외의 주변 부분으로 구성된다.
주변 부분이 프로그램의 연락 내용을 커널에 전달하고 커널이 하드웨어를 다룬다.

 

도커에서는 컨테이너가 완전히 분리되어 있으므로 밑바탕이 되는 리눅스 운영체제의 주변부분이 컨테이너 속 프로그램의 명령을 전달받을 수 없다.
따라서 컨테이너 속에 운영체제의 주변 부분이 들어있어 프로그램의 명령을 전달받고 이를 커널에 전달하는 구조로 되어있다.

컨테이너 속에 '리눅스 운영체제 비슷한 것'이 들어있다고 표현한 이유가 바로 이것이다!
전체 리눅스 운영체제가 들어있는 것이 아니라 주변 부분만 컨테이너에 넣고 커널은 밑바탕에 있는 것을 빌려 쓰는 형태 덕분에 

도커의 가장 큰 특징인 '가벼움'을 얻을 수 있다.

 

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

도커는 기본적으로 리눅스 운영체제에서만 동작한다.
밑바탕에서 리눅스 운영체제가 동작하는 것을 전제로하는 구조로 되어있기 때문이다.

또 컨테이너 안에 들어있는 주변 부분도, 컨테이너에서 실행할 소프트웨어(프로그램) 또한 모두 리눅스용 이어야 한다.
윈도우나 macOS용 소프트웨어는 컨테이너에 넣어도 동작하지 않는다.

즉, 도커는 리눅스 컴퓨터에 독립적인 환경을 만드는 것이며, 리눅스에서만 동작하고 컨테이너에서 동작할 프로그램도 리눅스용 프로그램이다.

 

도커에 대한 이야기는 대부분 서버 환경을 전제로 한 것이 많은데,
리눅스 운영체제가 서버에서 사용되는 경우가 많고, 리눅스용 소프트웨어도 서버용 소프트웨어가 많기 때문이다.

 

윈도우와 macOS에서 도커 구동하기

위에서 알아본 바로는, 도커는 리눅스 운영체제를 사용한다는 전제로 구조되었기 때문에 윈도우나 macOS 운영체제를 사용하는 컴퓨터에서는 도커를 사용할 수 없어야 한다.

그러나 실제로는 윈도우와 macOS에서도 도커를 사용할 수 있는데 크게 두 가지 경우가 있다.

  1. VirtualBox 또는 VMware 와 같은 가상환경 위에 리눅스 운영체제를 설치하고, 그 위에서 도커를 실행하는 방법
  2. 윈도우용 또는 macOS용 도커 데스크톱과 같은 도커를 실행하는 데 필요한 리눅스 운영체제를 포함하는 패키지를 설치해 사용하는 방법

간단히 말하면 윈도우나 macOS 위에 리눅스 운영체제를 끌어들여 도커를 실행하는 것이다.

도커를 사용하려면 어떤 형태로든 리눅스 운영체제를 갖춰야 한다는 것을 기억하자!