Search

1. 컨테이너와 도커의 이해

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 자동화에 핵심 (테스트 → 빌드 → 배포를 컨테이너 이미지 기반으로 쉽게)
정리하자면:
컨테이너 = 앱 실행에 필요한 도시락.
도커 = 도시락을 만들고 배달하는 도구.