기본 패턴
text
이미지 = 실행에 필요한 파일과 설정을 담은 청사진
컨테이너 = 이미지를 기반으로 실제 실행 중인 인스턴스설명
- 이미지는 읽기 전용 템플릿이며, 애플리케이션 실행에 필요한 파일, 라이브러리, 기본 명령을 포함합니다.
- 컨테이너는 그 이미지를 바탕으로 실제로 생성되어 실행 중인 인스턴스입니다.
- 하나의 이미지에서 여러 컨테이너를 만들 수 있다는 점이 핵심입니다.
- 이미지는 불변성을 전제로 설계되므로, 변경이 필요하면 기존 이미지를 고치는 대신 새 이미지를 다시 빌드합니다.
- 컨테이너 안에서 생긴 임시 변경은 컨테이너 생명주기와 함께 사라질 수 있으므로, 영속 데이터는 볼륨으로 분리하는 편이 일반적입니다.
짧은 예제
bash
docker pull nginx:alpine
docker run -d --name web1 nginx:alpine
docker run -d --name web2 nginx:alpine빠른 정리
| 항목 | 이미지 | 컨테이너 |
|---|---|---|
| 성격 | 정적 청사진 | 실행 중인 인스턴스 |
| 변경 방식 | 새로 빌드 | 생성, 시작, 중지, 삭제 |
| 개수 관계 | 하나가 여러 컨테이너의 기반이 됨 | 특정 이미지에서 만들어짐 |
| 저장 위치 | 로컬 캐시나 레지스트리 | Docker 엔진이 관리 |
| 주된 질문 | 무엇으로 실행할까? | 지금 무엇이 돌고 있나? |
주의할 점
컨테이너 안에서 직접 손으로 수정해 문제를 해결하는 습관은 오래 남기기 어렵습니다. 반복 가능성이 필요한 변경은 결국 Dockerfile과 이미지 빌드 단계로 옮겨야 합니다.
참고 링크
2 sources