Docker - 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 open source project
관련 project: docker compose, private registry, docker hub, docker for desktop 등
일반적인 docker의 의미: docker engine or related project for docker
각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생함
| type | 장점 | 단점 |
|---|---|---|
| docker | 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, namespace, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만듦 -> 성능 손실이 거의 없음. 컨테이너에 필요한 커널 -> 호스트의 커널을 공유해 사용, | 호스트는 모든 container에 영향을 끼침(예: 보안 취약점) |
| vm | 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함하기에 완벽한 운영체제를 생성할 수 있음. | 이미지의 크기가 커짐, 일반 호스트에 비해 성능 손실 존재, 수 기가바이트에 달하는 가상머신 이미지를 애플리케이션으로 배포하기에는 부담스러움 |
결론: 컨테이너를 이미지로 만들어 배포하는 시간이 가상 머신에 비해 빠르며, 가상화된 공간을 사용할 때의 성능 손실도 거의 없어 도커를 사용한다.
도커를 시작해야하는 이유
1. 애플리케이션의 개발과 배포가 편함
2. 여러 애플리케이션의 독립성과 확장성이 높아짐