[Docker] Container 가상화

콩퓨터·2025년 1월 23일

CI/CD

목록 보기
10/10

Container 가상화

Container는 무엇일까 ?

컨테이너 : 앱을 실행하는 데 필요한 모든 걸 담은 작은 상자와 같다.

  • 앱을 돌리는 데 필요한 코드, 프로그래밍 언어, 라이브러리 담은 상자.
  • Dockerfile 로 생성
  • 장점 :
    - 자원 공유로 효율적인 실행
    - 어디서든 동일하게 실행 가능
    - 독립적인 실행 환경 제공

Container 이점

  • 경량화 : OS를 공유하여 파일 크기 작고 빠르게 시작.
  • 이동성 & 플랫폼 독립성 : 앱 실행에 필요한 모든 것을 담아, 다양한 환경에서 동일하게 실행 가능.
  • 현대적 개발 지원 : 크기 작고 여러 플랫폼에서 잘 작동, 유연한 코드 업데이트
  • 사용률 향상 : CPU/메모리 자원 효율적 사용, 확장성과 유연성 향상.

Container 용도

  • 마이크로서비스 : 각 앱을 독립적으로 관리, 효율적인 서비스 배포.
  • DevOps : 빠르고 효율적인 개발 및 배포, 마이크로서비스와 호환.
  • 하이브리드/멀티클라우드 : 다양한 환경에서 실행 가능, 클라우드 전환 용이
  • 클라우드 마이그레이션 : 앱을 쉽게 클라우드로 이전하고 관리할 수 있음

Container 기술 발전

1️⃣ 예전 방식 :

  • 전통적으로, OS와 라이브러리, 프레임워크, 앱을 전체적으로 배포했음.

2️⃣ 가상화 :

  • 가상화 기술을 도입하여 하드웨어 자원을 가상화하고, 가상 머신(VM)을 사용해 독립적인 환경을 제공했음.
  • 그러나 VM은 운영체제와 라이브러리 등을 함께 실행해야 해서 자원 낭비 존재

3️⃣ 컨테이너 방식 :

  • 이제는 컨테이너만 배포하는 방식으로 바뀌었음.
  • Host OS 위에서 Docker Engine이 실행되고, 그 위에 컨테이너가 올라가서 앱, 라이브러리, 프레임워크를 함께 실행함.
  • 컨테이너는 OS의 커널을 공유하고, 필요한 파일만 포함하여 경량화된 환경을 제공, 효율적이고 빠른 배포가 가능.

Dokcer Architecture

  • Docker Host : Docker Engine이 실행되는 시스템.
  • Docker Engine : Docker의 핵심 구성 요소로, 컨테이너의 빌드, 실행, 관리 등을 담당하는 데몬.
  • 클라이언트 : Docker 명령어(docker run, docker build, docker pull 등)를 통해 Docker Engine에 요청을 보내는 주체.
  • 이미지 : Docker 컨테이너가 실행되기 전에 필요한 파일과 설정을 포함한 패키지.
  • Registry : Docker 이미지를 저장하고 관리하는 저장소로, 이미지는 이곳에서 다운로드(docker pull)하여 사용.
  • Container : 이미지를 기반으로 실행되는 독립적인 환경으로, 애플리케이션과 라이브러리가 포함.

Docker Host에서는 Docker Egine 돌아감
Docker Engine이 돌아가는 데몬에서 클라이언트 입장이되어 docker run, 이미지 빌드, 이미지 다운 가능
이미지는 Container가 돼서 동작을 하게 되고
Docker pull 한 경우에는 이미지를 Registry에서 다운 받아서 사용

Docker는 이미지에서 컨테이너를 생성하고, 클라이언트가 명령어를 통해 이를 관리하는 구조로 동작한다 !!


출저 : Container 발전
Docker Architecture
[TeamSparta]

profile
🔥💻🔥

0개의 댓글