"내 컴퓨터에서는 잘 되는데, 서버에서는 에러가 나요!"
개발자의 노트북, 테스트 서버, 운영 서버는 운영체제 버전, 자바 버전, 환경 변수 등이 모두 미세하게 다릅니다. 이 '의존성 지옥(Dependency Hell)'을 해결하기 위해 과거에는 가상머신(VM)을 썼지만 너무 무거웠습니다. 도커는 컨테이너(Container) 기술을 이용해 애플리케이션과 그 실행 환경 전체를 하나의 패키지(이미지)로 묶어 어디서든 100% 동일하게 실행되도록(멱등성 보장) 만들어줍니다.
| 비교 항목 | 가상머신 (Virtual Machine) | 도커 컨테이너 (Docker Container) |
|---|---|---|
| 게스트 OS | 각 VM마다 별도의 운영체제(Guest OS) 설치 필요 | 없음 (호스트 OS의 커널 공유) |
| 크기 및 리소스 | GB 단위 (무거움), 자원 할당량 고정 | MB 단위 (가벼움), 동적 자원 사용 |
| 부팅 속도 | OS 부팅이 필요하므로 수 분 소요 | 프로세스 실행과 동일하여 초 단위 소요 |