도커는 기존의 VMWare, VirtualBox, Parallels 같은 하이퍼바이저 기반의 가상 머신 방식과는 달리, 컨테이너를 사용하여 성능 저하가 거의 없이 애플리케이션을 가상화할 수 있어서 많은 개발자들에게 주목받고 있는 기술입니다.
다음은 Docker.com의 가이드 문서에서 정리되어 있는 Docker에 대한 정의입니다.
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.
가상 머신 vs 도커
우리가 잘 알고 있는 가상화 기술은 OS를 가상화하는 방식입니다. 이는 하이퍼바이저를 이용해서 호스트 OS 위에 게스트 OS를 설치함으로써 쉽게 호스트 OS와 완전히 독립된 공간을 만들 수 있습니다. 그러나, OS를 가상화하는 방식은 서버의 자원을 호스트 OS와 게스트 OS에 나눠서 각각 할당해야 하기 때문에 무겁고 느려지는 단점이 있습니다.
도커는 OS 가상화를 통한 성능 저하 문제를 해결하기 위해서 게스트 OS를 설치하는 대신에 리눅스 컨테이너 기술을 적용하였습니다. 애플리케이션 실행에 필요한 바이너리, 라이브러리 등을 컨테이너라고 불리는 규격으로 패키징하여 격리시키는 방식을 사용하고 있습니다. 위 그림에 있는 도커 엔진이 컨테이너를 실행하고 관리하는 플랫폼을 제공합니다.
도커 이미지는 가상머신의 이미지와 달리 OS 커널을 포함하고 있지 않기 때문에 이미지 크기가 작아서 애플리케이션을 배포하고 실행하는데 필요한 시간이 짧아진다는 장점이 있습니다.
도커 아키텍처
도커는 클라이언트-서버 아키텍처를 사용하고 있는 어플리케이션입니다.
도커 클라이언트는 컨테이너를 만들거나 실행을 요청하고, 서버는 컨테이너 이미지를 빌드, 공유, 실행 및 관리하는 작업을 수행합니다. 도커 클라이언트와 서버는 같은 서버에서 동작할 수도 있고, 원격으로 분리되어 동작할 수도 있습니다. 도커 클라이언트와 서버는 REST API를 이용해서 서로 통신합니다.
도커 서버 역할을 수행하는 데몬이 관리하는 여러 가지 중에서 가장 핵심인 이미지와 컨테이너가 있습니다. 이미지는 도커 컨테이너를 만들기 위한 명령들이 정의된 읽기 전용 템플릿으로 가상 머신을 생성할 때 사용하는 ISO 파일과 유사한 개념입니다. 컨테이너는 이미지의 실행 가능한 인스턴스입니다. 이미지를 이용해서 컨테이너를 생성하면 필요로 하는 파일시스템과 격리된 시스템 자원을 사용할 수 있는 독립된 공간이 생성됩니다. 이렇게 만들어진 도커 컨테이너는 호스트 시스템에서 다른 모든 프로세스와 완전히 격리된 채로 동작합니다.
도커 이미지와 컨테이너의 관계는 객체지향 프로그래밍에서 클래스와 객체의 관계라고 이해하면 쉬울 것 같습니다.
마지막으로, 도커 레지스트리는 도커 이미지를 저장하는 곳입니다. 퍼블릭 레지스트리로는 Docker Hub가 있으며 도커의 기본 이미지 저장소이기도 합니다. 개인 서버에 이미지를 저장하기 위해서 개인 프라이빗 레지리스트리를 구성하여 운영하는 것도 가능합니다.
위 그림은 Docker.com 사이트의 Docker Overview 문서 내 Architecture 그림입니다. 도커에 대한 상세한 설명을 확인할 수 있으니 방문해보시기 바랍니다.
'DevOps > Docker' 카테고리의 다른 글
Docker(도커) - docker run 사용법 (0) | 2021.02.20 |
---|---|
Docker(도커) 이미지 다운로드, 컨테이너 실행하기 (1) | 2021.02.20 |
Docker(도커) 설치 - Mac (0) | 2021.02.14 |
댓글