🐳 도커(Docker)란?
<aside>
애플리케이션과 모든 종속성을 컨테이너로 패키징하여, 환경에 상관없이 빠르고 일관된 실행을 보장하는 오픈소스 플랫폼입니다.
</aside>
리눅스 컨테이너 기술을 기반으로, 애플리케이션과 모든 종속성을 컨테이너 이미지로 패키징하여 환경에 상관없이 일관된 실행을 보장하는 오픈소스 플랫폼입니다.
도커는 이 이미지를 실행하여 독립된 컨테이너를 만들고, 레지스트리를 통해 공유하는 생태계를 통해, 애플리케이션을 빌드하고 전달하는 과정을 효율적으로 만듭니다.
✨ 특징
- 표준화된 실행 환경: 애플리케이션과 종속성을 하나의 이미지로 패키징하여, 개발부터 운영 전 구간에서 동일하게 실행됩니다.
- 이미지 레이어 시스템: 이미지는 여러 개의 읽기 전용 레이어가 겹쳐진 구조로, 코드 수정 시 변경된 레이어만 새로 빌드하므로 전체 빌드 시간을 획기적으로 단축합니다.
- 빠른 실행 속도: 호스트 OS의 커널을 공유하므로, VM보다 훨씬 빠르게 컨테이너를 시작하거나 중지할 수 있습니다.
💡비유: 📦 이동식 박스에 모든 실행 환경을 담아, 어디서든 똑같이 실행되도록 만든 것입니다.
🧩 핵심요소
- Dockerfile: 컨테이너 이미지를 어떻게 만들지 순서대로 정의한 설계도입니다.
- 이미지 (Image): Dockerfile을 바탕으로 만들어진, 애플리케이션 실행에 필요한 모든 것을 담은 읽기 전용 템플릿입니다.
- 컨테이너 (Container): 이미지를 실행한 인스턴스로, 격리된 공간에서 독립적으로 동작합니다.
- 레지스트리 (Registry): 생성된 이미지를 저장하고 공유하는 원격 저장소입니다.
👍 장점
- 빠르고 가볍다: VM보다 훨씬 작고 빠르게 실행됩니다. (MB 단위, 수 초 내 실행)
- 환경 일관성: 개발, 테스트, 운영 환경에서 동일하게 동작하여 환경 차이로 인한 오류를 방지합니다.