Virtual Box에 대한 기본적인 정보를 모른다면, 나중에 도커를 사용할 때 Virtual Box관련 환경설정 때문에 고생할 수 있다고 합니다. 그래서 오늘은 먼저 Virtual Box에 대해 알아보고, 윈도우에서 도커 사용시 왜 VM이 필요한지에 대해 살펴보겠습니다.
먼저, 도커 터미널을 열고, 다음 명령어를 입력합니다.
docker-machine ls
현재 설치된 모든 도커 머신에 대한 정보를 출력하는 명령어 입니다.
확인해보면 이름이 'default'인 도커 머신이 존재하는 것을 확인할 수 있습니다.
그런 다음, 도커 툴박스 설치시 같이 설치된 Oracle VM을 엽니다.
그러면 도커 머신에서 확인했던 'default'를 확인할 수 있습니다. 도커 머신은 하나의 ISO 이미지 파일로 동작합니다. 컴퓨터에 도커 머신을 여러개 설치 할 수 있습니다. 도커 머신을 설치할 때마다 각각 완전히 다른 ISO 이미지 파일이 생성되어 Virtual Box 위에서 구동됩니다. 따라서 도커 머신끼리는 완전히 분리되어 각각 다양한 이미지와 컨테이너 파일을 다룰 수 있게 됩니다.
'default'이미지 파일의 자세한 정보를 살펴보면, 리눅스 64bit로 설정되어 있고 boot2docker.iso 이미지파일이 57MB라는 것을 확인할 수 있습니다. 보통 운영체제는 큰 용량을 가지고 있지만 도커는 최소한의 기능만을 갖춘 운영체제의 위에서 동작하도록 설계되어 있습니다.
윈도우는 사실상 도커의 OS가 될 수 없습니다. 바로 도커가 리눅스 기반으로 운영되며 최소한의 기능만을 갖춘 리눅스에서 구동되기 때문입니다. 그래서 이러한 리눅스를 가상으로 구축하여(VM Virtual Box) 그 안에서 도커 엔진을 올리게 되는 것입니다.
.docker가 있는 곳에서 다음과 같은 경로로 이동하면 disk.vmdk 파일을 확인할 수 있습니다. vmdk파일은 버츄어 박스에서 돌릴 수 있는 이미지가 그대로 존재합니다. vmdk 파일은 도커 머신 내부의 이미지 및 컨테이너를 모두 포함하고 있는 파일입니다. 만약 특정 도커 머신에 이미지를 많이 설치하게 되면 이 파일의 크기가 커지게 됩니다.
docker version
위 명령어로 확인시 도커의 클라이언트는 윈도우, 서버는 리눅스인 것을 확인할 수 있습니다. 도커는 리눅스 운영체제를 Host하고, 접속을 할 때는 윈도우의 클라이언트 소프트웨어가 이용됩니다. 도커를 윈도우에서 이용하면, 도커가 ㅇ달아서 커맨드 명령을 입력해 도커 서버와 통신을 하게 됩니다.
도커 자체는 관리자 권한으로 실행되지만, 도커 위에서 돌아가는 컨테이너는 Host에 대한 관리자 권한이 없습니다. 컨테이너 안에서만 사용되는 권한이 부여되기 때문에, Host OS와 도커 컨테이너는 분리가 됩니다. 그래서 컨테이너가 해킹을 당해도 웹 서버와 같은 코어 모듈이 아닌 이상 Host OS는 해킹이 되지 않습니다. 지금처럼 윈도우 상에 올라간 가상의 리눅스가 Host OS라면, 리눅스를 타고 윈도우까지 침입하는 경우는 어렵습니다. 하지만 실제 상용서버에서는 윈도우가 아닌 자체 리눅스 Host OS에서 도커 엔진을 돌리는 경우가 많기 때문에 보안에 신경써야 한다고 합니다.