TIL

9_1.클라우드 및 Docker 개념 학습

꿀승 2025. 2. 17. 22:25
728x90
반응형
SMALL

학습내용

  1. 클라우드 컴퓨팅
  2. Docker
  3. Docker Compose

학습정리

1. 클라우드 컴퓨팅

  • 개념
    • 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어 등의 IT 리소스를 제공하는 기술
    • 컴퓨터의 저장 공간이나 프로그램을 개인 PC나 회사 서버가 아닌, 인터넷을 통해 제공되는 데이터 센터에서 이용하는 방식
  • 주요 특징
    • 온디맨드(On-Demand): 필요할 때만 IT 리소스를 사용할 수 있음
    • 확장성(Scalability): 사용량에 따라 자원을 쉽게 늘리거나 줄일 수 있음
    • 비용 절감(Cost Efficiency): 필요한 만큼만 사용하고 요금을 지불하는 구조 (예: 구독형 모델)
    • 접근성(Accessibility): 인터넷만 있으면 어디서든 사용 가능
    • 자동 업데이트(Auto Update): 최신 소프트웨어 및 보안 패치를 자동으로 적용
  • 장/단점
    • 장점
      • 비용 절감 : 하드웨어 구매, 유지보수 비용 절감
      • 확장성(Scalability) : 필요할 때만 자원을 추가하거나 줄일 수 있음
      • 접근성(Accessibility) : 인터넷이 있으면 어디서든 서비스 이용 가능
      • 보안 및 백업 : 대규모 데이터 센터에서 보안 및 데이터 보호 기능 제공
    • 단점
      • 인터넷 의존도 : 네트워크 장애가 발생하면 서비스 이용 불가
      • 보안 문제 : 클라우드 제공업체의 보안이 뚫리면 데이터가 유출될 위험
      • 벤더 락인(Vendor Lock-in) : 특정 클라우드 업체에 종속될 가능성 있음
  • 서비스 모델
    • IaaS (Infrastructure as a Service) - 인프라 서비스
      • 예시: AWS EC2, Google Compute Engine, Microsoft Azure VM
      • 사용 사례: 데이터 센터 구축 없이 가상 서버를 임대하여 사용
    • PaaS (Platform as a Service) - 플랫폼 서비스
      • 예시: Google App Engine, AWS Elastic Beanstalk, Microsoft Azure App Service
      • 사용 사례: 웹 애플리케이션 개발 및 배포
    • SaaS (Software as a Service) - 소프트웨어 서비스
      • 예시: Google Drive, Microsoft 365, Dropbox, Salesforce
      • 사용 사례: 클라우드 기반 이메일, 협업 툴, CRM(고객관리 시스템)


출처 : https://www.redhat.com/ko/topics/cloud-computing/iaas-vs-paas-vs-saas

  • 클라우두 컴퓨팅 형태
    • 퍼블릭 클라우드 (Public Cloud)
      • AWS, Google Cloud, Microsoft Azure 같은 기업이 제공하는 공용 클라우드
      • 초기 비용이 저렴하고 확장성이 뛰어나지만, 보안과 데이터 통제에 제한이 있을 수 있음
    • 프라이빗 클라우드 (Private Cloud)
      • 기업이나 기관이 자체적으로 운영하는 클라우드 환경
      • 보안이 뛰어나지만 구축 및 유지 비용이 높음
    • 하이브리드 클라우드 (Hybrid Cloud)
      • 퍼블릭과 프라이빗 클라우드를 혼합하여 사용
      • 보안이 중요한 데이터는 프라이빗 클라우드에서, 일반 서비스는 퍼블릭 클라우드에서 운영
    • 멀티 클라우드 (Multi Cloud)
      • 여러 클라우드 서비스(AWS, Azure, Google Cloud 등)를 조합하여 사용
      • 특정 클라우드 제공업체에 종속되지 않고 유연하게 서비스 운영 가능

2. Docker

  • 컨테이너 기술을 활용하여 애플리케이션을 실행하는 플랫폼

  • 가상 머신과 비교하여 가볍고 빠른 환경 제공 -> OS를 공유하기 때문에

  • 핵심 개념

    • 이미지 : 실행 가능한 애플리케이션 패키지
    • 컨테이너 : 실행 중인 독립 된 환경
    • DockerFile : 컨테이너를 정의하는 설정 파일
    • DockerHub : 공개된 Docker 이미지를 저장하는 레파지토리\
  • Docker Architecture


    출처 : https://docs.docker.com/get-started/docker-overview/

  • Docker Client (CLI, REST API, UI)

    • 사용자가 Docker와 상호작용할 수 있도록 명령을 전달하는 인터페이스
    • CLI(Command Line Interface) 또는 REST API를 사용하여 컨테이너를 실행하거나 관리할 수 있음
  • Docker Daemon (dockerd)

    • Docker의 핵심 엔진으로, 컨테이너와 이미지를 관리하는 역할
    • Clinet 로 부터 명령을 받아 컨테이너 생성, 네트워크 관리, 스토리지 할당 등을 처리
  • Docker Images

    • 컨테이너를 실행하는 데 필요한 파일 시스템과 애플리케이션 코드가 포함된 템플릿
    • Layer 기반의 구조로, 같은 이미지에서 여러 개의 컨테이너 생성 가능
  • Containers

    • 독립적으로 실행되는 애플리케이션 인스턴스
    • 각 컨테이너는 자체 파일 시스템과 네트워크 인터페이스를 가지며, 다른 컨테이너와 격리됨
    • docker run 명령으로 생성 가능
  • Docker Registry (Docker Hub, Private Registry)

    • Docker 이미지를 저장하고 배포하는 서비스
    • Docker Hub(공개), Amazon ECR, Google GCR 등의 사설 레지스트리를 사용 가능
    • docker pull 또는 docker push 명령으로 이미지를 업로드/다운로드
  • Storage & Networking

    • Storage: 컨테이너의 데이터를 지속적으로 저장하기 위해 Volumes, Bind Mounts, Tmpfs 사용
    • Networking: 브리지(Bridge), 호스트(Host), 오버레이(Overlay) 등의 네트워크 드라이버를 통해 컨테이너 간 통신을 제공

3. Docker Compose

  • 개념
    • 여러 개의 컨테이너를 하나의 서비스로 관리하는 도구
    • YAML 파일로 컨테이너 정의 및 실행 가능
    • 개발 및 배포 환경에서 다중 컨테이너 애플리케이션을 쉽게 설정할 수 있습니다
  • Docker Compose 버전 비교
    비교 항목 V1 (구버전, Standalone) V2 (최신, Docker CLI 플러그인)
    실행 방식 독립 실행형 (docker-compose 바이너리) Docker CLI 플러그인 방식
    기본 명령어 docker-compose up -d docker compose up -d (공백 있음)
    설치 필요 여부 별도 설치 필요 최신 Docker에 기본 포함
    지원 파일명 docker-compose.yml만 지원 docker-compose.yml 및 compose.yml 지원
    파일 지정 방법 -f docker-compose.prod.yml -f compose.prod.yml
    기본 사용 여부 Docker 최신 버전에서는 비활성화됨 Docker 최신 버전에서 기본 사용됨
    다중 파일 지원 docker-compose.override.yml 사용 가능 동일하지만, compose.override.yml도 가능
    업그레이드 방법 더 이상 공식 지원되지 않음 최신 Docker 설치 시 자동 포함
  • 기본 사용법
    • 파일 작성
      services:
        web:
          image: nginx:alpine
          ports:
            - "8080:80"
        redis:
          image: redis:alpine
    • 실행
      docker compose up -d #V2 -d 데몬실행
      docker-compose up -d #V1
    • 중 지 및 삭제
      docker compose down
      docker-compose down
  • Docker Compose vs Kubernetes
    특징 Docker Compose Kubernetes
    주요 목적 로컬 환경 및 개발 단계에서 컨테이너 오케스트레이션 대규모 컨테이너 오케스트레이션 및 클러스터 관리
    설정 방식 YAML 파일 (docker-compose.yml) YAML 파일 (deployment.yaml, service.yaml 등)
    확장성 로컬 개발 환경에서 사용, 자동 스케일링 없음 클러스터 기반으로 자동 스케일링 지원
    로드 밸런싱 기본적으로 미지원 (수동 설정 필요) 내장된 로드 밸런서 및 서비스 디스커버리 지원
    스토리지 관리 로컬 볼륨 마운트 사용 퍼시스턴트 볼륨 (PV, PVC) 지원
    배포 방식 단순한 컨테이너 실행 롤링 업데이트, Canary 배포, Blue-Green 배포 지원

참고자료

728x90
반응형
LIST