Docker는 **컨테이너화(containerization)**를 위한 플랫폼으로, 애플리케이션을 그 모든 의존성과 함께 어디서나 일관되게 실행되는 이식 가능한 **컨테이너(container)**로 패키징합니다. 이는 환경을 재현 가능하게 만들어 고전적인 "제 컴퓨터에서는 잘 돌아가는데(it works on my machine)" 문제를 해결합니다.
문제: 일관되지 않은 환경
컨테이너가 없으면:
→ 애플리케이션이 개발자의 컴퓨터에서는 동작하지만 테스트/프로덕션에서는 실패함
→ 다른 OS, 라이브러리 버전, 설정, 누락된 의존성 → "제 컴퓨터에서는 잘 돌아가는데"
→ 환경 구축이 수동적이고 오류가 발생하기 쉬우며 일관되지 않음
해결책: 컨테이너
컨테이너는 애플리케이션 + 그 모든 의존성(런타임, 라이브러리, 설정)을
어디서나 동일하게 실행되는 하나의 단위로 패키징합니다:
→ "한 번 빌드하면 어디서나 실행(build once, run anywhere)" — 개발 노트북, CI, 스테이징, 프로덕션(모두 동일)
→ 호스트 및 다른 컨테이너로부터 격리됨
→ 가볍고 빠르게 시작됨
→ Docker는 환경을 재현 가능하고 이식 가능하게 만듭니다.
