용어 | 설명 |
---|---|
이미지 (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보다 훨씬 적은 리소스로 여러 애플리케이션 실행 가능 |
격리된 보안 환경 | 각 컨테이너는 독립된 환경으로 격리되어 보안성 향상 |