Week5
📝 이번 주 목표
📚 강의 내용 정리
(1) 도커 소개
도커 개요
- 특징
- 애플리케이션을 개발, 제공 및 실행하기 위한 개방형 플랫폼
- 애플리케이션을 인프라에서 분리하여 소프트웨어를 빠르게 제공 가능
- 반응형 배포 및 확장, 이식성, 경량 특성, 서비스 확장 및 해체 가능
- 동일한 하드웨어에서 더 많은 워크로드 실행
- VirtualBox나 VMWare 등은 하드웨어부터 가상화, Docker를 사용하면 실행하고자하는 프로세스만 격리된 환경에서 실행하는 것이 가능!
- 결론 : 쿠버네티스와 쿠베플로우를 위한 핵심적인 요소!
- 컨테이너 : 애플리케이션을 배포하고 테스트하는 단위
- 느슨하게 격리된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능 제공
- 격리 및 보안을 통해 주어진 호스트에서 여러 컨테이너 동시에 실행 가능
- 작업하는 동안 컨테이너를 쉽게 공유 가능
- CI/CD를 도커 단위로 진행하여 업무 프로세스 표준화 향상 가능 (개발 수명주기 간소화)
- 아키텍쳐 : 클라이언트-서버
- 도커 클라이언트는 도커 컨테이너를 빌드, 실행 및 배포하는 무거운 작업을 수행하는 도커 데몬과 UNIX 소켓 또는 REST API를 사용하여 통신한다.
- 도커 클라이언트와 데몬은 동일한 시스템에서 실행되거나 원격 연결될 수 있다.
- 구성 요소
- 도커 데몬(dockerd) : 도커 API 요청 수신, 도커 객체 관리, 다른 데몬과 통신하여 도커 서비스 관리
- 도커 클라이언트(docker) : 도커 사용자가 도커와 상호작용하는 방법, 도커 명령은 Docker API 사용
- 도커 레지스트리(Registry) : 도커 이미지 저장소, 이미지를 push 하고 pull 받을 수 있다.
- 도커 허브(Hub) : 누구나 사용할 수 있는 공용 레지스트리
- 도커 객체 : 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 등
- 이미지 : 도커 컨테이너를 만들기 위한 템플릿, 도커 빌드 시 도커 이미지 생성 (정적인 파일)
- 컨테이너 : 이미지의 실행 가능한 인스턴스, 이미지 실행 시 컨테이너 생성
도커 설치
도커 실습
- Getting Started
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 .
- 앱 컨테이너 시작하기 :
docker run -dp 3000:3000 getting-started
(2) 쿠버네티스 기초
쿠버네티스 개요
- 쿠버네티스가 필요한 이유
- 게임 서버의 접속자 폭주로 인한 장애
- 서비스 갯수에 따른 인프라 관리의 어려움
- 수직적 오토스케일링(Vertical Pod Auto-scaler)
- 수평적 오토스케일링(Horizontal Pod Auto-scaler)
쿠버네티스 설치
- Docker - Settings - Kubernetes - ✅ Enable Kubernetes
쿠버네티스 앱 배포 실습