안경잡이개발자

728x90
반응형

도커 툴박스(Docker Toolbox)를 구동시키는 Virtual Box 분석하기

나동빈


  윈도우에서 도커를 갓 접하여 공부하시는 분들에게는 도커(Docker) 관련 Virtual Box 환경설정 때문에 애를 많이 먹게 됩니다. 그래서 나중에 헤매이지 않기 위해서 몇 가지 Virtual Box 관련 상식을 알고 있으시는게 좋습니다. 이를 건너뛰고 다음 강의를 보셔도 상관이 없지만 이 강의에서 다루는 내용을 제대로 숙지하고 넘어가시는 것을 강력하게 추천합니다.


  현재 다루는 내용은 도커 툴박스(Docker Toolbox)를 설치하신 분을 기준으로 설명이 진행됩니다. 다시 말해 Oracle VM VirtualBox를 사용한다고 가정하는 것입니다.


※ Virtual Box는 어떻게 사용되고 있는 걸까? ※



docker-machine ls: 현재 설치된 모든 도커 머신(Docker Machine) 정보를 출력합니다.


  위 명령어 입력 결과 'default'라는 이름의 도커 머신이 돌아가고 있는 것을 알 수 있습니다. 그렇다면 이러한 도커 머신은 어디에서 확인할 수 있을까요?



  도커 툴박스를 설치하면서 자동으로 설치된 Oracle VM VirtualBox를 열어봅시다. 그랬더니 방금 도커 머신에서 확인했던 'default'가 보입니다. 다시 말해 도커 머신은 하나의 ISO 이미지 파일로 동작한다고 볼 수 있는 겁니다. 우리는 우리의 컴퓨터에 여리 개의 도커 머신을 설치할 수 있는데요, 도커 머신을 설치할 때마다 완전히 다른 ISO 이미지 파일이 생성되어 우리의 Virtual Box 위에서 돌아가는 것이라고 할 수 있습니다. 그렇기 때문에 도커 머신끼리는 완전히 분리되어 각각 다양한 이미지와 컨테이너 파일을 다룰 수 있는 것입니다.



  한번 'default' 이미지 파일의 '자세한 정보'를 살펴봅시다. 그랬더니 리눅스 운영체제 64-bit으로 설정된 것을 알 수 있습니다. 신기한 점은 boot2docker.iso를 이용하고 있는데, 이미지 파일이 48MB 밖에 안 됩니다. 우분투(Ubuntu) 등의 리눅스 운영체제를 설치해보신 분들은 아시겠지만 보통 운영체제는 1GB는 우스울 정도의 큰 용량을 가집니다.


  그에 반해 도커(Docker)는 가벼운 용량을 위해 최소한의 기능만을 갖춘 운영체제의 위에서 돌아가도록 설계된 겁니다. 지난 시간에 언급했듯이 사실 윈도우는 Docker Host OS가 될 수 없으므로 이러한 리눅스를 가상으로 구축하여 그 위에 도커 엔진을 올리게 되는 것이랍니다.


※ 물리적 경로에서 살펴보기 ※


  ▶ 도커 머신의 물리적 경로: C:\Users\(사용자 이름)\.docker



  윈도우 운영체제에서 도커 머신은 실제로 위 경로에서 찾을 수 있습니다. 다시 말해 .docker 폴더 내에 실질적인 도커 머신 관련 이미지 파일을 포함해 각종 파일들이 모두 들어가 있는 겁니다.



  위와 같이 'default' 도커 머신의 경로를 찾아 들어가봅시다. 그랬더니 ISO 파일 및 vmdk 파일이 존재합니다. 다시 말해 Virtual Box에서 돌릴 수 있는 이미지가 그대로 존재하는 겁니다. vmdk 파일은 도커 머신 내부의 이미지 및 컨테이너를 모두 포함하고 있는 파일이기 때문에 만약에 특정 도커 머신에 이미지를 많이 설치하면 이 파일의 크기가 매우 커집니다. 이것저것 필요한 걸 모두 설치하다 보면 20GB도 우습게 될 수 있습니다. 도커는 가벼운 용량을 지향하지만 부득이한 경우를 잘 고려하셔야 합니다.



docker version: 클라이언트 및 서버의 버전 정보를 출력합니다.


  위 명령어는 클라이언트 혹은 서버 중에서 설정이 잘못 되어있으면 위와 같이 정상적으로 출력이 되지 않을 수 있답니다. 일단 위 경우를 살펴보자면 클라이언트 정보는 'Windows'이고, 서버 정보는 'Linux'입니다. 이것이 어떤 의미냐면 현재 도커 서버는 아까 봤듯이 기본적으로 리눅스 운영체제를 Host로 하여 돌아가고 있으므로 거기에 접속을 할 때는 윈도우 상의 클라이언트 소프트웨어가 이용된다는 말입니다. 우리도 모르는 사이에 커맨드 명령을 입력해서 도커 서버와 통신을 하고 있는 것입니다. 물론 클라이언트나 서버나 지금은 실습하고 있는 우리 로컬 컴퓨터 안에 모두 포함되어 있지만요.


  재미있는 점은 도커 자체는 '관리자 권한(root)'으로 실행되지만 도커 위에서 돌아가는 컨테이너(Container) 자체는 Host에 대한 관리자 권한이 없습니다. 컨테이너 안에서만 사용되는 권한이 부여되는 것이기 때문에 Host OS와 도커 컨테이너는 완전히 분리됩니다. 그래서 컨테이너가 해킹(Hacking)을 당해도 웹 서버와 같은 코어 모듈이 아닌 이상 Host OS까지 모두 피해를 받는 일은 적습니다. 또한 지금처럼 Host OS가 윈도우 상에 올라가 있는 가상 리눅스라면 리눅스를 타고 윈도우까지 침입을 하는 경우는 더 어렵죠. 물론 실제 상용 서버에서는 윈도우가 아닌 자체 리눅스 Host OS에서 도커 엔진을 돌리는 경우가 많기 때문에 보안상의 만반의 준비를 하실 필요가 있습니다.

728x90
반응형