| 용어 | 설명 |
|---|---|
| 이미지 (Image) | 컨테이너를 만들기 위한 실행 패키지. 코드, 라이브러리, 설정파일 등을 포함 |
| 컨테이너 (Container) | 이미지 기반으로 실행되는 가벼운 격리된 환경 |
| Dockerfile | 이미지를 자동으로 만들기 위한 설정 파일 (빌드 스크립트) |
| Docker Hub | 공개된 이미지 저장소 (GitHub처럼 이미지 저장/배포) |
| 볼륨 (Volume) | 컨테이너 외부에 데이터를 저장하는 방식 (데이터 유지용) |
| 네트워크 (Network) | 컨테이너 간 통신을 위한 가상 네트워크 구성 |
📦 "컨테이너를 만들기 위한 설계도, 실행 패키지"
- 애플리케이션을 실행하는 데 필요한 모든 것(코드, 라이브러리, 설정파일 등)이 담겨 있는 정적인 파일
- 한 번 만들면 여러 번 재사용 가능
- 예:
ubuntu,node:18,mysql:5.7같은 기본 이미지도 Docker Hub에서 가져올 수 있음
🚀 "이미지를 실제로 실행한 살아있는 인스턴스"
- 이미지를 기반으로 실행되는 격리된 환경
- 각각의 컨테이너는 독립된 프로세스로 동작하며, 서로 영향을 주지 않음
- 컨테이너는 필요할 때 실행하고, 필요 없으면 삭제 가능
🧾 "이미지를 자동으로 만드는 레시피"
- 이미지 생성을 자동화하기 위한 설정 파일
- 예를 들어
FROM ubuntu,COPY,RUN npm install등의 명령어로 이미지 구성
🌍 "이미지 저장소 (GitHub 같은 개념)"
- 전 세계 개발자들이 만든 수많은 이미지를 공유하고 검색할 수 있는 공식 이미지 저장소
docker pull명령으로 쉽게 가져올 수 있음- 나만의 이미지를 만들어 올릴 수도 있음
🗃️ "데이터를 저장하는 공간"
- 컨테이너는 삭제되면 안의 데이터도 사라지기 때문에, 영속적인 데이터 저장을 위해 사용하는 외부 저장 공간
- DB 데이터, 설정 파일 등 지속되어야 하는 데이터를 저장할 때 사용
| 특징 | 설명 |
|---|---|
| 경량화된 가상화 | VM보다 훨씬 가볍고 빠른 실행 가능 |
| 이미지 기반 배포 | 환경 설정이 포함된 이미지를 통해 어디서나 동일하게 실행 가능 |
| 빠른 배포와 실행 | 수 초 만에 컨테이너 실행 가능 |
| 환경 격리 | 개발, 테스트, 운영 환경을 독립적으로 구성 가능 |
| 버전 관리 | 이미지 버전을 관리하고 롤백 가능 |
| 장점 | 설명 |
|---|---|
| 개발 환경 통일 | 모든 개발자가 같은 환경에서 작업 가능 (개발/테스트 환경 차이 해소) |
| 빠른 롤백/재배포 | 이전 버전 이미지로 즉시 롤백 가능 |
| 테스트 자동화 용이 | CI/CD 파이프라인에 쉽게 통합 가능 |
| 자원 효율성 | VM보다 훨씬 적은 리소스로 여러 애플리케이션 실행 가능 |
| 격리된 보안 환경 | 각 컨테이너는 독립된 환경으로 격리되어 보안성 향상 |