도커의 동작 원리

728x90
반응형

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스

 

도커의 구조

  • 물리 서버가 있고, 이 물리 서버에서 동작하는 리눅스 운영체제가 있다. 여기까지는 일반적인 서버와 동일하다.
  • 일반적인 서버라면 운영체제 위에 프로그램이나 데이터가 직접 올라간다. 하지만 도커를 사용하는 경우 운영체제 위에 도커 엔진이 동작하고 그 위에서 컨테이너가 동작한다.
  • 프로그램이나 데이터는 컨테이너 안에 있다.

 

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

  • '컨테이너에 넣는다'는 표현을 생각하면 빈 컨테이너에 무언가를 넣는 상상을 하게 되지만 '정말로 텅 빈 컨테이너'는 이외로 잘 사용하지 않는다.(Scratch라는 이미지를 이용하면 텅 빈 컨테이너를 생성할 수 있지만, 사용할 일이 잘 없다)
  • 모든 컨테이너에는 '리눅스 운영체제 비슷한 무언가'가 들어있다. '빈 컨테이너'가 진짜 텅 빈 것은 아니다.
  • 도커 엔진 아래에도 리눅스 운영체제가 있는데, 컨테이너 속에 또 리눅스 운영체제 비슷한 것이 있다.
  • 본래 운영체제는 '커널'과 '유틸리티'로 구성된다.
  • 도커에서는 컨테이너가 완전히 분리돼 있으므로 밑바탕이 되는 리눅스 운영체제의 유틸리티 부분이 컨테이너 속 프로그램의 명령을 전달받을 수 없다. 따라서 컨테이너 속에 운영체제의 유틸리티 부분이 들어있어 프로그램의 명령을 전달받고 이를 밑바탕이 되는 커널에 전달하는 구조로 되어있다.
  • 유틸리티 부분만 컨테이너에 넣고 커널은 밑바탕에 있는 것을 빌려 쓰는 형태 덕분에 도커의 가장 큰 특징인 '가벼움'을 얻을 수 있다.

 

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

  • 도커는 기본적으로 리눅스 운영체제에서만 동작한다.
  • 도커는 밑바탕에서 리눅스 운영체제가 동작하는 것을 전제로 하는 구조로 되어있기 때문에 리눅스 운영체제에서만 동작할 수 있다.
  • 컨테이너 안에 들어 있는 유틸리티도 리눅스 운영체제의 유틸리티 부분이어야 한다.
  • 윈도우나 macOS용 소프트웨어는 컨테이너에 넣어도 동작하지 않는다.
  • 도커는 리눅스 컴퓨터에 독립된 격리 환경을 만드는 것이며, 리눅스에서만 동작하고, 컨테이너에서 동작할 프로그램도 리눅스용 프로그램이다.
  • 도커는 대게 서버 환경을 전제로 한 것이 많은데, 리눅스 운영체제가 서버에서 사용되는 경우가 많고 리눅스용 소프트웨어도 서버용 소프트웨어가 많기 때문이다.

 

Windows와 macOS에서 도커 구동하기

  • 도커는 리눅스 운영체제를 사용한다고 전제하기 때문에 우리가 평소에 사용하는 Windows나 macOS 운영체제를 사용하는 컴퓨터에서는 도커를 사용할 수 없어야한다. 하지만 실제로는 Windows나 macOS 컴퓨터에서도 도커를 사용할 수 있다.
  • VirtualBox나 VMware 같은 가상 환경 위에 리눅스 운영체제를 설치하고 그 위에서 도커를 실행하거나 'Windows용 또는 macOS용 도커 데스크톱'처럼 도커를 실행하는 데 필요한 리눅스 운영체제를 포함하는 패키지를 설치해 사용하는 2가지 경우로 나뉜다.
  • 즉, Windows나 macOS 위에 리눅스 운영체제를 끌어들여 도커를 실행하는 것이다.
  • 도커를 사용하려면 어떤 형태로든 리눅스 운영체제를 갖춰야 한다는 점을 기억하자.
728x90
반응형