1. 컨테이너(Container)란?
•
정의: 애플리케이션과 그 애플리케이션이 실행되는 환경(라이브러리, 설정, 의존성 등)을 하나의 독립된 공간으로 패키징한 것.
•
특징:
◦
OS 위에서 프로세스 단위로 격리되어 실행됨.
◦
가상머신(VM)과 달리 OS 전체를 복제하지 않고, 필요한 실행 환경만 따로 만들어서 가볍고 빠름.
◦
“내 컴퓨터에서는 되는데 서버에서는 안 된다” 문제를 크게 줄여줌.
2. 도커(Docker)란?
•
정의: 컨테이너를 쉽고 효율적으로 만들고, 실행하고, 관리할 수 있도록 도와주는 플랫폼/도구.
•
역할:
◦
컨테이너 생성 및 실행 → docker run
◦
컨테이너 이미지 생성 및 배포 → docker build, docker push
◦
컨테이너 실행 상태 관리 → docker ps, docker stop, docker logs
3. 컨테이너 vs 가상머신(VM)
구분 | 가상머신(VM) | 컨테이너 |
실행 방식 | OS 전체를 가상화 | OS 커널 공유, 프로세스 격리 |
무게 | 무겁다 (수 GB) | 가볍다 (수 MB~수백 MB) |
속도 | 느림 (부팅 수분) | 빠름 (초 단위 실행) |
사용 사례 | 복잡한 환경 완전 격리 필요 시 | 빠른 배포, 마이크로서비스 운영 |
4. 왜 중요한가?
•
개발 환경과 운영 환경의 차이 최소화 (개발자는 로컬에서, 운영팀은 서버에서 동일하게 실행 가능)
•
마이크로서비스 아키텍처와 잘 맞음 (서비스를 작은 단위로 쪼개고 각각 컨테이너로 배포)
•
CI/CD 자동화에 핵심 (테스트 → 빌드 → 배포를 컨테이너 이미지 기반으로 쉽게)
•
컨테이너 = 앱 실행에 필요한 도시락.
•
도커 = 도시락을 만들고 배달하는 도구.