Docker란?
도커(Docker)는 애플리케이션을 컨테이너(Container)라는 가벼운 환경에서 실행 및 관리할 수 있는 툴
Docker를 사용하는 이유
- 환경 일관성 보장
- "내 컴퓨터에서는 잘 되는데?" → 도커를 사용하면 개발, 테스트, 배포 환경이 동일하므로 이런 문제가 사라짐
- 경량화된 가상화 (컨테이너 방식)
- 기존 VM(가상 머신)은 무겁고 성능이 떨어지지만, 도커 컨테이너는 가볍고 빠름
- 배포 및 확장 용이
- 애플리케이션을 컨테이너 이미지로 만들어 어디서든 실행 가능(이식성)
- 마이크로서비스 아키텍처(MSA)에서 필수적인 기술
- 각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않음
핵심 개념
이미지(image)란?
- 실행 가능한 애플리케이션과 모든 종속성을 포함한 템플릿
- Dockerfile을 통해 생성
컨테이너(Container)란?
- 이미지를 실행한 실제 프로세스
- 격리된 환경에서 실행되며, 필요하면 여러 개 생성 가능
- docker run 명령어로 실행

Dockerfile
Docker Compose
- 여러 개의 컨테이너를 한 번에 실행하는 도구
- docker-compose.yml 파일 사용
Docker Volume
- Docker 컨테이너는 기본적으로 휘발성(Volatile)이므로, 컨테이너를 삭제하면 내부 데이터도 사라짐, 이를 해결하기 위해 Docker Volume을 사용
✅ Volume을 사용하는 이유
1. 컨테이너가 삭제되어도 데이터 유지 가능
2. 여러 컨테이너가 같은 데이터 공유 가능
3. 호스트 OS와 독립적으로 관리 가능 (보안성 & 성능 향상)
Docker Network
- Docker에서는 컨테이너 간 통신을 위해 네트워크(Network)를 사용
✅ 네트워크를 사용하는 이유
1. 컨테이너 간 통신 가능 (내부 IP 할당)
2. 호스트와 컨테이너 간 연결 가능
3. 보안 분리 (다른 네트워크와 격리 가능)
✅ 네트워크 종류
네트워크 타입
|
설명
|
bridge
|
기본 네트워크, 컨테이너 간 통신 가능
|
host
|
컨테이너가 호스트의 네트워크를 직접 사용
|
none
|
네트워크 미적용 (격리된 상태)
|
overlay
|
여러 호스트의 컨테이너를 연결 (Swarm 모드)
|
참고
https://velog.io/@markany/도커에-대한-어떤-것-1.-도커란-무엇인가
https://squirmm.tistory.com/entry/Docker-도커란-무엇인가
https://seosh817.tistory.com/345