Container& Docker

Container& Docker

컨테이너 기술 개요 🐳


1️⃣ 컨테이너란? 🏗️

컨테이너(Container)는 애플리케이션과 필요한 모든 종속성을 하나의 패키지로 묶어, 어디서든 일관되게 실행할 수 있도록 만든 가상화 기술입니다.

📌 컨테이너는 운영체제(OS) 수준에서 격리되어 실행되며, 물리적 서버 또는 가상 머신 위에서 가볍고 빠르게 배포 및 실행할 수 있습니다.


2️⃣ VM vs. 컨테이너 차이 ⚖️

항목 가상 머신(VM) 🏢 컨테이너(Container) 📦
실행 방식 하이퍼바이저(VMware, KVM 등)에서 실행 호스트 OS에서 직접 실행
OS 격리 각 VM이 자체 OS 포함 커널을 공유하며 독립된 환경 제공
성능 OS 부팅이 필요하여 상대적으로 느림 가벼운 실행 환경으로 빠름
자원 사용 각각의 VM이 메모리, CPU를 많이 사용 가벼운 프로세스 단위로 실행
배포 속도 OS 부팅 시간이 필요 즉시 실행 가능

🔍 컨테이너는 가볍고 빠르며, 자원 효율성이 뛰어나므로, 클라우드 및 마이크로서비스 환경에서 널리 사용됩니다!

📌 컨테이너 아키텍처 비교 그림

컨테이너 vs. VM 아키텍처
출처: 위키피디아


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 네트워크 구조
Docker 네트워크 구조

RSS Feed