컨테이너란?
컨테이너: 경량화된 Virtual Machine (운영체제를 포함하지 않음)
컨테이너 구동 위해서는 컨테이너 엔진(호스트 OS에 접근) 필요 > 가장 많이 사용되는 것이 도커
도커란?
컨테이너를 만들고, 배포하고, 구동
컨테이너를 만들기 위해서는
Dockerfile: 꼭 필요한 파일, 필요한 dependency, 환경 변수, 구동 script 포함
Image: 도커파일 이용하여 생성, 시스템 툴, 시스템 라이브러리 등 모두 포함 (불변의 상태)
Container: 이미지를 고립된 환경에서 실행 (컨테이너 안에서 어플리케이션 실행)
이미지: 객체지향의 class와 유사 (템플릿 형태)
그 클래스를 이용하여 실제로 구동하는 컨테이너 생성
이미지는 불변, 컨테이너 안에서 구동되어있는 애플리케이션(인스턴스와 유사)은 수정 가능
배포 방법 (이미지 공유)
Container Registry에 업로드
업로드된 이미지를 다운받아 컨테이너 엔진을 통해 구동
public: docker hub, github packages 등
private(기업에서 주로 사용): aws, google cloud 등
실제 사용법
도커파일 이용하여 스냅샷(이미지)생성 > 레지스트리 업로드 > 서버에서 다운로드
--실습--
FROM으로 시작
레이어 시스템 > 빈번히 수정되는 파일을 마지막에 작성하는 것이 좋음 (변경되지 않은 건 캐시된 것 재사용 > 효율성)
FROM node:16-alpine # 베이스 이미지 명시
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci # install은 최신버전이기 때문에 package-lock.json에 명시된 버전을 다운받는 ci 사용
ENTRYPOINT [ "node", "index.js" ]
컨테이너와 쿠버네티스
컨테이너 운영의 고민
- 배포 관리 (최적의 스케줄링, 컨테이너 배치 등)
- 제어 및 모니터링 (상태 추적 및 관리)
- 스케일링 (운영 상황과 사용량 규모에 대응)
- 네트워킹 (인스턴스 및 컨테이너 상호 연결)
> 해결방안: 컨테이너 오케스트레이션
: 대규모 컨테이너들이 안정적으로 운영될 수 있도록 자동화
출처 🔽
도커 레퍼런스: https://docs.docker.com/engine/re ference/builder/
'TIL' 카테고리의 다른 글
실용주의 프로그래머 3장 (0) | 2024.06.23 |
---|---|
실용주의 프로그래머 2장 (0) | 2024.06.22 |
Docker Container (1) | 2024.01.05 |
코드업 C언어 기초 100제 (1) | 2023.10.30 |
WebSquare 2 - 개요 (0) | 2023.08.01 |