개발 공부를 시작하면 꼭 마주치는 단어, 도커(Docker). "내 컴퓨터에선 되는데 왜 네 컴퓨터에선 안 되지?"라는 개발자들의 영원한 숙제를 해결해 준 고마운 도구입니다.
오늘은 도커의 핵심 개념인 이미지와 컨테이너를 비유를 통해 아주 쉽게 정리해 보겠습니다.
1. 도커(Docker), 왜 쓰는 걸까?
한마디로 "환경을 표준화"하기 위해서입니다.
과거에는 서버에 프로그램을 배포하려면 운영체제 설치하고, 자바 깔고, DB 설치하고... 이 과정에서 버전이 안 맞으면 에러가 났습니다. 하지만 도커는 프로그램과 실행 환경을 '컨테이너'라는 상자에 담아 전달합니다. 이 상자만 있으면 언제 어디서든 똑같이 실행됩니다.
2. 핵심 비유: "요리(밀키트)"로 이해하기
도커의 작동 원리는 '밀키트'와 아주 비슷합니다.
1. 도커 파일 (Dockerfile) = 요리 레시피 (주문서)
- "이 요리에는 양파 1개, 고기 200g이 필요하고, 10분간 끓여야 한다"고 적힌 설계도입니다.
- 개발자는 이 문서를 작성해서 도커에게 "이대로 만들어줘"라고 시킵니다.
2. 도커 이미지 (Image) = 포장된 밀키트
- 레시피(Dockerfile)를 보고 공장에서 딱 맞춰 생산된 시판용 밀키트입니다.
- 특징: 꽁꽁 얼어있는 냉동 상태라 내용물이 변하지 않습니다(Immutable). 마트에 진열된 상태로는 먹을 수 없습니다.
- 이 밀키트(이미지)만 있으면 누구든 똑같은 맛(환경)을 낼 수 있습니다.
3. 도커 컨테이너 (Container) = 조리된 음식
- 밀키트(이미지)를 뜯어서 가스불에 올리면(실행하면) 비로소 먹을 수 있는 요리가 됩니다.
- 특징: 이제부터는 국물을 떠먹거나 재료를 추가할 수 있습니다(상태 변경 가능).
- 중요: 밀키트 하나(이미지 1개)로 요리 100그릇(컨테이너 100개)을 동시에 만들 수도 있습니다.
3. 한눈에 보는 이미지 vs 컨테이너 차이점
| 구분 | 도커 이미지 | 도커 컨테이너 |
| 비유 | 밀키트, 붕어빵 틀 | 조리된 요리, 붕어빵 |
| 성격 | 설계도, 정적인 파일 (변하지 않음) | 실행된 프로세스 (변할 수 있음) |
| 역할 | 컨테이너를 만들기 위한 재료 | 실제 프로그램이 동작하는 공간 |
| 개수 | 1개 (원본) | N개 (이미지 하나로 여러 개 생성 가능) |
4. 요약
- 도커(Docker)는 프로그램 실행 환경을 상자(Container)에 담아 옮기는 기술이다.
- 이미지(Image)는 실행에 필요한 모든 파일과 설정을 담은 '변하지 않는 원본 파일'이다.
- 컨테이너(Container)는 이미지를 실행하여 실제로 메모리에 올라간 '실행 상태'이다.
도커를 공부한다는 건 결국 "어떻게 좋은 레시피(Dockerfile)를 짜서, 깔끔한 밀키트(Image)를 만들고, 그걸 맛있는 요리(Container)로 실행할 것인가"를 배우는 과정이라고 보시면 됩니다.
'Backend & Infra > Docker' 카테고리의 다른 글
| [Docker] 도커의 아키텍처와 컨테이너의 동작 원리 (VM과의 차이점) (0) | 2025.12.11 |
|---|---|
| 로컬에서 프로젝트(PDFMASK) 서비스를 Docker로 실행하는 방법 (0) | 2025.11.26 |
| Docker 명령어 정리 (자주 사용하던 명령어_2) (1) | 2025.06.04 |
| GCP 서버에 (Flask + Gunicorn) + KoBERT + Whisper 기반 음성피싱 탐지 시스템 구축기 (1) | 2025.05.27 |
| GCP + Docker 기반 Flask API 서버 배포 중 발생한 3가지 핵심 문제와 해결 방법 (0) | 2025.05.23 |