Docker 간편한 설치부터 실행까지

​ ​

Docker는 오픈소스 컨테이너입니다. 기존의 가상머신과 비슷하면서도 훨씬 가벼운 형태라고 볼 수 있습니다. 그렇다면 VMWare, VirtualBox와 같은 기존의 가상머신과 Docker Container가 어떻게 다른지 살펴보겠습니다.

vm-docker

먼저 기존의 가상머신(Virtual Machine)을 보면 Hypervisor(VMWare, VirtualBox…) 위에 GuestOS가 올라간 형태임을 알 수 있습니다. OS가 올라갔다는 것은 말 그대로 x86 하드웨어가 그대로 가상화 된 것입니다. 가상머신을 설치하고 메모리 영역을 확인해보면 호스트 메모리와 게스트 메모리를 볼 수 있는데, 게스트 메모리를 얼마나 할당할 것인지에 따라 가상머신의 성능이 변하기도 합니다.

반면에 Docker는 Docker Engine 위에 Application이 올라간 것을 볼 수 있습니다. 즉, Docker Engine을 통해 Host OS 위에서 컨테이너가 생성되는 것입니다. 여기서 컨테이너는 리눅스 커널의 cgroups, namespaces 등의 기능을 사용해 가상공간을 생성할 수 있도록 하는 기능입니다.

​ ​

컨테이너가 가상머신보다 뛰어난 점은?

기본적으로 가상머신을 사용하게 되면 상세 설정을 해주지 않는 한 메모리, CPU 코어, 프로세스 등 각종 성능 손실이 발생합니다. 반면에 컨테이너는 Host OS의 커널은 그대로 사용하고 일부분만 패키징 되기 때문에 용량이 크게 줄어들 뿐만 아니라, 프로세스 영역도 기존의 OS와 공유해서 사용합니다. 정리하자면, 컨테이너는 하드웨어를 가상화하는 계층이 없기 때문에 메모리 접근, 파일시스템, 네트워크 속도가 가상 머신에 비해 월등히 빠릅니다.

​ ​

Boot2Docker

앞서 말했던 것 처럼 Docker는 리눅스 커널의 컨테이너 기능을 기반으로 하기 때문에 Windows나 OS X 환경에서 실행할 수 없습니다. 그래서 이를 지원하기 위해 나온 것이 Boot2Docker 입니다. Boot2Docker는 가상머신 안에 리눅스를 설치하고 Docker를 실행하는 방식으로 이를 해결했습니다.

하지만 15년 9월쯤 부터 boot2docker-cil이 deprecated 되었습니다. 이제 공식 레퍼런스를 보면 toolbox를 이용하여 설치하는 방법을 권장하고 있으며 기존의 boot2docker에서 이전하는 방법에 대해서도 설명하고 있습니다.

​ ​

OS X에서 Docker 설치

Docker를 설치하는 방법으로는 크게 2가지가 있습니다. 첫번째는 Docker for Mac으로 설치하는 방법이고, 두번째는 Docker Toolbox로 설치하는 방법입니다.

​ ​

Docker for Mac과 Docker Toolbox의 차이점은?

가장 큰 차이점은 사용하는 가상머신이 다르다는 점입니다. Docker Toolbox 같은 경우에는 Boot2Docker에서 사용해왔던 VirtualBox를 그대로 사용합니다. 반면에 Docker for Mac은 HyperKit 이라는 macOS를 위한 경량화 가상머신을 사용합니다.

docker-formac

Docker Toolbox를 사용하는 경우, 위와 같이 /usr/local/bin 폴더에 docker, docker-compose, docker-machine이 설치됩니다. 그리고 가상화는 VirtualBox를 통해 이루어지게 됩니다.

docker-toolbox

반면에 Docker for Mac은 Applications 폴더 내에 app으로 관리할 수 있게 됩니다. 그리고 가상화는 오라클의 VirtualBox 을 통해 이루어집니다. 따라서, 둘다 설치할 필요가 없습니다.

만일 전부터 Docker를 써왔고, VirtualBox를 꼭 써야한다면, Docker Toolbox를 설치하시면 됩니다. 또는 “나는 App으로 관리하는게 편하다” 라고 한다면 Docker for Mac을 사용하시면 됩니다. 자세한 내용은 다음을 참고하시면 됩니다. https://docs.docker.com/docker-for-mac/docker-toolbox/

만일 둘 다 설치했고, Docker toolbox를 제거하고 싶다면 다음 링크를 참고하시면 됩니다. https://docs.docker.com/toolbox/toolbox_install_mac/#how-to-uninstall-toolbox

​ ​

Docker 실행

저는 Docker for Mac을 사용하여 설치했습니다.

docker-run

어플리케이션 데몬을 실행시키면 이제 docker 명령어를 사용할 수 있게 됩니다.

docker version
docker info

이제 한번 테스트 해볼 시간입니다. 아래의 명령어를 통해 nginx 이미지를 만들고 80번 포트에 웹 서버를 띄워 보겠습니다.

docker run -d -p 80:80 --name webserver nginx

docker-test

실행되고 있는 웹 서버를 중지하고 컨테이너를 삭제해보겠습니다.

docker ps
docker stop webserver
docker rm -f webserver

아직 이미지는 남아있는 상태입니다. 이미지까지 삭제해줍니다.

docker images
docker rmi nginx

자세한 Docker 사용법이나 명령어는 다음에 정리하도록 하겠습니다.

​ ​