: 일반적으로 도커 엔진 혹은 도커 관련 모든 프로젝트를 의미한다.
가상 머신과 도커 컨테이너
기존의 방식
- 하이퍼바이저를 이용해 가상 머신에 운영체제를 설치해 사용하던 방식. 따라서 각 게스트 운영체제는 다른 게스트 운영체제와 완전히 독립된 공간과 시스템 자원을 할당받아 사용한다. (VMware, VirtualBox 등)
- 게스트 운영체제를 사용하기 위한 라이브러리, 커널을 포함해 이미지 크기가 크다는 단점이 있다.
도커 컨테이너
- 리눅스 자체 기능인 chroot, 네임스페이스, cgroup을 사용해 프로세스 단위로 Resource(CPU, Disk, memory, network) 사용량을 제한하고, 호스트의 커널을 공유한다.
- 컨테이너 안에는 애플리케이션 구동에 필요한 라이브러리 및 실행파일만 존재한다. -> 기존에 비해 이미지 크기 작다.
도커를 사용하는 이유
- 개발, 배포의 편리함: 격리된 공간을 사용하기 때문에 독립된 개발 환경을 보장받으며, 배포를 위해서는 도커 이미지만 공유하면 된다.
- 독립성과 확장성: 서비스가 복잡해지면서 모놀리스 -> MSA가 필요해지는데, 이 때 MSA 구조에서 여러 모듈이 독립된 형태로 구성되어 관리가 쉬워진다.
도커 엔진
- 리눅스 운영체제 위에서 시스템 자원(커널)을 공유받으면서 실행된다. 따라서, 리눅스에서 도커를 사용하는 것이 가장 권장된다.
- 윈도우, Mac을 사용하기 위해선 Docker desktop을 사용해야 한다. 윈도우용 Docker desktop은 Hyper-V 가상화 기술을, Mac용 Docker desktop은 xhyve 기술을 이용한다. 이 때 Docker desktop에서 커널은 리눅스킷의 커널을 따르게 된다.
- 이 밖에, 실제 리눅스 환경과 동일하게 구성하기 위해서는 VMware 위에 리눅스를 구성한 뒤 docker를 사용하거나 ec2 위에서 사용하는 방법이 있다.
Reference)
시작하세요! 도커 / 쿠버네티스