일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Developer
- AWS
- 온라인테스트
- 배포
- 프로그래밍
- 42서울
- 전국대학생게임개발동아리연합회
- 개발공부
- 위키북스
- 자바개발자
- CICD
- 백엔드
- 체크인미팅
- UNICON
- 스프링부트
- 게임개발동아리
- 라피신
- 프리티어
- 스프링
- UNICON2023
- 티스토리챌린지
- EC2
- 오블완
- 백엔드개발자
- 인프라
- 도커
- RDS
- 인디게임
- UNIDEV
- 생활코딩
- Today
- Total
Hyun's Wonderwall
[GDSC Ewha 5th] 7주차 과제 - 도커, 쿠버네티스 본문
[1. Docker]
* 컨테이너 : 코드와 그에 필요한 모든 종속성을 패키징하여 응용 프로그램이 한 컴퓨팅 환경에서 빠르고 신뢰성 있게 다른 환경으로 실행되도록 하는 표준 소프트웨어 단위.
* Docker : 컨테이너를 관리하기 위한 기술. 애플리케이션을 개발, 출시, 실행하기 위해 사용하는 개방형 플랫폼이다.
Docker를 사용하면 인프라에서 애플리케이션을 분리하고 인프라를 관리형 애플리케이션처럼 취급할 수 있다. Docker의 커널 컨테이너화 기능을 애플리케이션 관리 및 배포를 지원하는 워크플로우 및 도구와 결합하여 사용하는데, 이렇게 함으로써 코드를 더욱 빠르게 출시, 테스트, 배포할 수 있다. (# GitHub CI/CD에서 도커 활용한 경험 생각남)
VM vs Docker
VM : Guest OS가 존재하여 가상화된 하드웨어에서 동작한다. Guest OS는 자체 커널을 보유하고, 자체 커널은 하이퍼바이저와 상호작용한다. 하이퍼바이저는 하드웨어 자원에 액세스한다. -> 오버헤드 문제?
Docker : Guest OS 없이 Host OS 위에 바로 애플리케이션을 패키징한 컨테이너를 올린다. 컨테이너는 Host 시스템의 운영 체제 커널(리눅스 커널)을 공유한다. VM에 비해 종속성 격리가 간편하다.(Guest OS를 설치할 필요가 없어서)
*커널: 운영체제의 핵심적인 역할을 하는 코어.(프로세스 관리, 메모리 관리, 저장장치 관리 등)
Docker와 리눅스 기술
Host가 리눅스 커널이 있어야 컨테이너가 호스트의 리눅스 커널을 공유 가능하다. (맥은 바로 쓸 수 있지만, 윈도우의 경우 WSL을 설치해야 함) 컨테이너는 다음의 4가지 리눅스 기술을 활용한다: Processes, Namespaces, cgroups, Union file systems
Docker = 프로세스
도커 컨테이너는 호스트 시스템이 보기에는 하나의 프로세스이고(PID), 도커 컨테이너가 보기에는 하나의 머신처럼 관리된다. (도커 프로세스 ID: 1번)
GCP
- 멀티 리전, 리전, 컴퓨팅 영역
# 실습: GCP의 Cloud Shell 사용하기
# 실습: 도커 컨테이너 실행하기
- 도커는 먼저 로컬에서 실행할 이미지를 찾고, 로컬에 없으면 DockerHub라는 공개 레지스트리에 이 이미지가 있는지를 자동으로 검색한다.
# 실습: Dockerfile로 Node 서버 만들기 (Node.js 서버를 띄움)
- FROM (퍼블릭 repo에서 이미지를 pull)
- ADD, COPY (로컬 파일을 복사. 뭐를 어디에 할지 할 때 . /app 등 폴더 위치를 작성.)
- CMD (컨테이너가 출시된 다음에 실행할 명령문들을 정의)
[2. K8S]
쿠버네티스 (Kubernetes, k8s)
컨테이너로 이루어진 워크로드와 서비스를 관리하기 위한 기술.
이식성이 있고 확장가능한 오픈소스 플랫폼. 선언적 구성과 자동화를 모두 용이하게 해준다.
쿠버네티스 아키텍쳐
Master Node=컨트롤 플레인, 아래에 여러 Worker Node들이 있다.
GKE 클러스터 아키텍쳐
사용자는 컨트롤 플레인으로 클러스터 전체를 관리. (kubectl 명령어로 접근)
Work Nodes는 Pod들을 가지며, Pod는 컨테이너들의 집합 단위임. (컨테이너 그 자체를 다루지 않고 Pod를 관리.)
Pod
Pod의 컨테이너들은 네트워킹과 스토리지를 비롯해 리소스를 공유함. IP 주소, 네트워크 포트, 네트워크 네임스페이스 등도...
# 실습: GKE 클러스터 생성, 클러스터에 애플리케이션 배포
'Study > Java, Spring' 카테고리의 다른 글
[EFUB 4기 BE Lead] 도메인 주도 개발 시작하기 - 1. 도메인 모델 시작하기 (0) | 2024.03.10 |
---|---|
[GDSC Ewha 5th] 7주차 과제 - Service & Deployment, K8S Update method (1) | 2024.02.29 |
[도서 리뷰] 아는만큼 보이는 백엔드 개발 (0) | 2024.02.22 |
API와 API 명세서란? (2) | 2024.01.05 |
[GDSC Study] 스프링 기반 REST API 개발 - 5주차 | 섹션 5. REST API 보안 적용 (0) | 2023.12.27 |