Week5

📝 이번 주 목표

  • [Section 3] 도커 & 쿠버네티스 기초
    • (1) 도커 소개
    • (2) 쿠버네티스 기초

📚 강의 내용 정리

(1) 도커 소개

도커 개요

  • 특징
    • 애플리케이션을 개발, 제공 및 실행하기 위한 개방형 플랫폼
    • 애플리케이션을 인프라에서 분리하여 소프트웨어를 빠르게 제공 가능
    • 반응형 배포 및 확장, 이식성, 경량 특성, 서비스 확장 및 해체 가능
    • 동일한 하드웨어에서 더 많은 워크로드 실행
    • VirtualBox나 VMWare 등은 하드웨어부터 가상화, Docker를 사용하면 실행하고자하는 프로세스만 격리된 환경에서 실행하는 것이 가능!
    • 결론 : 쿠버네티스와 쿠베플로우를 위한 핵심적인 요소!
  • 컨테이너 : 애플리케이션을 배포하고 테스트하는 단위
    • 느슨하게 격리된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능 제공
    • 격리 및 보안을 통해 주어진 호스트에서 여러 컨테이너 동시에 실행 가능
    • 작업하는 동안 컨테이너를 쉽게 공유 가능
    • CI/CD를 도커 단위로 진행하여 업무 프로세스 표준화 향상 가능 (개발 수명주기 간소화)
  • 아키텍쳐 : 클라이언트-서버 image
    • 도커 클라이언트는 도커 컨테이너를 빌드, 실행 및 배포하는 무거운 작업을 수행하는 도커 데몬과 UNIX 소켓 또는 REST API를 사용하여 통신한다.
    • 도커 클라이언트와 데몬은 동일한 시스템에서 실행되거나 원격 연결될 수 있다.
  • 구성 요소
    • 도커 데몬(dockerd) : 도커 API 요청 수신, 도커 객체 관리, 다른 데몬과 통신하여 도커 서비스 관리
    • 도커 클라이언트(docker) : 도커 사용자가 도커와 상호작용하는 방법, 도커 명령은 Docker API 사용
    • 도커 레지스트리(Registry) : 도커 이미지 저장소, 이미지를 push 하고 pull 받을 수 있다.
    • 도커 허브(Hub) : 누구나 사용할 수 있는 공용 레지스트리
    • 도커 객체 : 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 등
      • 이미지 : 도커 컨테이너를 만들기 위한 템플릿, 도커 빌드 시 도커 이미지 생성 (정적인 파일)
      • 컨테이너 : 이미지의 실행 가능한 인스턴스, 이미지 실행 시 컨테이너 생성

도커 설치

도커 실습

  • Getting Started image
    • docker run -d -p 80:80 docker/getting-started
      • -d : 백그라운드에서 컨테이너 실행
      • -p 80:80 : 호스트의 80번 포트를 컨테이너의 80번 포트와 맵핑한다.
      • docker/getting-started : 사용할 이미지
    • docker ps : 실행중인 도커 확인
  • Sample application
    • Dockerfile : 사용자가 이미지를 조합하기 위해 명령줄에서 호출할 수 있는 모든 명령이 포함된 텍스트 문서 (Dockerfile 작성법 자세하게 알아보기)
    • DockerFile 만들고 빌드하기 : docker build -t getting-started . image
    • 앱 컨테이너 시작하기 : docker run -dp 3000:3000 getting-started image image

(2) 쿠버네티스 기초

쿠버네티스 개요

  • 쿠버네티스가 필요한 이유
    • 게임 서버의 접속자 폭주로 인한 장애
    • 서비스 갯수에 따른 인프라 관리의 어려움
    • 수직적 오토스케일링(Vertical Pod Auto-scaler)
    • 수평적 오토스케일링(Horizontal Pod Auto-scaler)

쿠버네티스 설치

  • Docker - Settings - Kubernetes - ✅ Enable Kubernetes

쿠버네티스 앱 배포 실습