[Docker] Docker 기본 개념

 

 

컨테이너란?

 

컨테이너: 경량화된 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/

 

Dockerfile reference

Find all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.

docs.docker.com

 

'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