1. 개요
<Docker 가상 환경 구축 입문>의 <Chapter 1.Docker에 대해 이해하기>를 읽고 정리한 내용으로, 이번 문서의 주된 내용은 Docker의 개념과 특징에 대한 설명입니다.
2. Docker의 개념
- Docker: Docker사가 개발한 컨테이너 방식 가상화를 위한 플랫폼
- Docker를 통해 애플리케이션의 개발 환경 구축, 애플리케이션의 실행 및 배포가 가능
3. VirtualBox(가상머신)와 Docker(컨테이너)의 특징과 차이점
구분 | 가상머신 | 컨테이너형 가상화 |
---|---|---|
가상화 소프트웨어 | 하이퍼바이저 | Docker Engine |
게스트 OS | 있음 | 없음 |
OS 자유도 |
임의의 게스트 OS를 동작시킬 수 있어, 자유도가 높음 |
컨테이너 자체에는 게스트 OS가 없기 때문에 자유도에 제한이 있음 |
애플리케이션 실행 주체 | 가상 머신의 게스트 OS | 물리 머신의 호스트 OS |
가상화 오버헤드 |
|
|
분리 레벨 |
|
|
4. Docker의 플랫폼으로서의 정의
- 단순한 컨테이너 방식 가상화 소프트웨어가 아닌, 애플리케이션의 개발, 배포, 실행의 흐름을 지원하기 위한 다양한 기능 및 서비스가 갖추어져 있어, 플랫폼으로 정의함
- Docker 플랫폼의 기능 및 서비스
서비스 명 | 설명 |
---|---|
Docker Engine | Docker Image로부터 컨테이너를 작성하거나, 컨테이너를 관리하는 기능 |
Docker Command | Docker Engine에 지시를 내리거나, 컨테이너의 정보 확인 및 관리에 사용되는 커맨드 |
Docker Compose | WAS 컨테이너, DB 서버 컨테이너 등 많은 역할을 하는 컨테이너를 통합 관리하기 위한 기능 |
Docker Machine |
Docker Engine이 설치된 가상 머신을 만들거나 관리하기 위한 툴로, 클라우드 서비스 상에 Docker 용 가상 머신을 만들 수 있음 |
Docker Hub | Docker Image의 보관 장소를 제공하는 레지스트리 |
Docker Swarm |
Docker가 설치된 서버에서 클러스터 구성을 하거나 유연하게 컨테이너 수를 스케일하는 등 운영 환경에서의 환경 구축을 위한 오케스트레이션 기능 |
5. 구성 관리 툴
- Ansible, Chef, Puppet 등의 툴이 있음
- 다수의 서버를 동일한 설정으로 구축할 때, 하나의 구성 관리 설정 파일을 이용해 서버를 구성할 수 있게하는 툴
- Docker의 경우, 이러한 설정을 Docker Image라는 일종의 파일 모음으로 저장하고, 그 이미지를 토대로 환경을 구축