- Docker는 애플리케이션을 쉽게 만들고, 테스트하고, 배포할 수 있게 도와주는 소프트웨어 플랫폼이다.
- 애플리케이션을 컨테이너라는 가볍고 이식성 있는 패키지로 실행할 수 있다.
- 주요 특징으로는 컨테이너화, 경량, 이식성, 확장성 등이 있다.
- 장점 : 주요 특징과 함께, 빠른 시작 시간과 낮은 오버헤드라는 장점이 있다.
- 단점: 보안 격리가 가상 머신보다 약하며 리눅스 환경에서는 괜찮지만 다른 운영체제는 성능 저하가 있다.
- 도커의 사용 케이스
일관된 개발 환경이 필요할 때, 애플리케이션을 빠르게 배포시, 마이크로서비스 아키텍처를 도입시, CI/CD 파이프라인 구축시, 리소스 효율성을 높으고 싶을때, 애플리케이션 격리가 필요할 떄, 쉽게 스키엘링하고 싶을 때, 쿠버네티스와 함께 사용하고자 할 때 등

가상 머신(VM)은 하이퍼바이저를 통해 물리적 하드웨어 위에 가상화된 운영 체제를 실행하는 기술. 하이퍼바이저는 여러 운영 체제를 동시에 실행할 수 있도록 물리적 하드웨어를 가상화하는 소프트웨어이다.
장점은 격리된 환경을 제공하며 다양한 운영체제를 동시에 실행가능한 점이 있고, 단점으로는 오버헤드가 크고 느린 부팅시간, 높은 리소스 소비가 있다.
Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구로, docker-compose.yml 파일 하나로 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의할 수 있다.
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
app:
build: .
ports:
- "8081:8080"
depends_on:
- db
db:
image: postgres
environment:
POSTGRES_PASSWORD: example도커끼리 컨테이너 이름으로 호출하기 위해선 기본 브리지 네트워크가 아닌 사용자 정의 네트워크에서 진행해야 하지만, 도커 컴포즈로 실행할 경우 기본 브리지 네트워크가 자동 생성규칙에 의한 이름으로 자동 생성된다. 이 네트워크는 docker-compose.yml 파일에 정의된 모든 서비스가 서로 통신할 수 있다.