Container& Docker
컨테이너 기술 개요 🐳
1️⃣ 컨테이너란? 🏗️
컨테이너(Container)는 애플리케이션과 필요한 모든 종속성을 하나의 패키지로 묶어, 어디서든 일관되게 실행할 수 있도록 만든 가상화 기술입니다.
📌 컨테이너는 운영체제(OS) 수준에서 격리되어 실행되며, 물리적 서버 또는 가상 머신 위에서 가볍고 빠르게 배포 및 실행할 수 있습니다.
2️⃣ VM vs. 컨테이너 차이 ⚖️
항목 | 가상 머신(VM) 🏢 | 컨테이너(Container) 📦 |
---|---|---|
실행 방식 | 하이퍼바이저(VMware, KVM 등)에서 실행 | 호스트 OS에서 직접 실행 |
OS 격리 | 각 VM이 자체 OS 포함 | 커널을 공유하며 독립된 환경 제공 |
성능 | OS 부팅이 필요하여 상대적으로 느림 | 가벼운 실행 환경으로 빠름 |
자원 사용 | 각각의 VM이 메모리, CPU를 많이 사용 | 가벼운 프로세스 단위로 실행 |
배포 속도 | OS 부팅 시간이 필요 | 즉시 실행 가능 |
🔍 컨테이너는 가볍고 빠르며, 자원 효율성이 뛰어나므로, 클라우드 및 마이크로서비스 환경에서 널리 사용됩니다!
📌 컨테이너 아키텍처 비교 그림
출처: 위키피디아
3️⃣ 컨테이너 기술이 필요한 이유 🌍
✅ 개발 환경의 일관성 유지 – “내 로컬에서는 잘 되는데?” 문제 해결
✅ 빠른 배포 및 확장 – 경량 컨테이너를 사용하여 즉시 실행 가능
✅ 효율적인 리소스 활용 – VM보다 메모리, CPU 사용량이 적음
✅ 마이크로서비스 아키텍처 지원 – 각 서비스별 독립적인 실행 가능
📌 실제 활용 예시
- Netflix, Google, Facebook 등은 컨테이너 기술을 활용하여 빠른 서비스 배포와 자동 확장을 수행
- 금융권, 공공기관에서도 컨테이너를 활용하여 보안 및 효율성 강화
4️⃣ 주요 컨테이너 런타임 비교 🔍
컨테이너 런타임 | 특징 |
---|---|
Docker | 가장 널리 사용되는 컨테이너 런타임, 사용 편리 |
containerd | CNCF(Cloud Native Computing Foundation)에서 관리, 경량화된 Docker 대안 |
Firecracker | AWS에서 개발, 경량 VM 기반 컨테이너, 보안성 강화 |
📌 컨테이너 런타임 구조
출처: Medium
5️⃣ Docker 기본 개념 🚢
6️⃣ Docker란? 🐳
Docker는 컨테이너를 쉽게 만들고, 배포하고, 실행할 수 있도록 도와주는 플랫폼입니다.
📌 Docker의 주요 특징
✅ 컨테이너 이미지를 빌드, 실행, 관리할 수 있음
✅ 운영체제에 독립적인 환경을 제공
✅ 경량화된 실행 방식으로 빠른 배포 가능
7️⃣ Docker의 주요 개념 📌
1 Docker 이미지 (Image) 🏗️
- 컨테이너 실행을 위한 템플릿 역할
- 여러 개의 계층(layer)로 구성
Docker Hub
또는프라이빗 레지스트리
에서 다운로드 가능- 예시:
nginx
,mysql
,redis
이미지
📌 Docker 이미지 구조
Base Image (Ubuntu)
├── Layer 1: System Dependencies
├── Layer 2: Application Binaries
├── Layer 3: Configuration Files
└── Container
2 Docker 컨테이너 (Container) 📦
- 이미지를 실행한 인스턴스
- 독립된 환경에서 실행되며, 필요한 애플리케이션 및 라이브러리를 포함
- 컨테이너 간 격리된 환경 제공
📌 컨테이너 실행 예제
docker run -d --name my_nginx -p 8080:80 nginx
3 Docker 레지스트리 (Registry) 📤
- Docker 이미지를 저장하는 공간
- 공개 저장소(Docker Hub) 또는 프라이빗 저장소 사용 가능
📌 레지스트리 사용 예제
docker pull ubuntu:latest # Docker Hub에서 이미지 다운로드
docker tag my_app myrepo/my_app:v1.0 # 이미지 태깅
docker push myrepo/my_app:v1.0 # 프라이빗 레지스트리에 업로드
4 Docker 볼륨 (Volume) 🗄️
- 컨테이너 데이터 영속성을 유지하는 저장소
- 컨테이너가 종료되어도 데이터 유지 가능
📌 볼륨 사용 예제
docker volume create my_volume
docker run -d -v my_volume:/data my_container
5 Docker 네트워크 (Network) 🌐
- 컨테이너 간 통신을 관리하는 기능
- 기본적으로 bridge, host, overlay 네트워크 제공
📌 네트워크 사용 예제
docker network create my_network
docker run -d --network my_network my_container
📌 Docker 네트워크 구조