[DevOps] Docker와 Kubernetes의 기본 개념 공부.

데브옵스

목록 보기
2/3
post-thumbnail

[DevOps] Docker와 Kubernetes의 기본 개념 공부.

▽[DevOps] Docker와 Kubernetes의 기본 개념 공부.

목  차

🐳 Docker 기본 개념

1. 컨테이너(Container)란 무엇이며 기존 가상화와 컨테이너(Container) 기반의 가상화의 차이점

2. Docker란 무엇인가??

3 기존 방식 vs Docker

4. Docker의 핵심 개념

☸️ Kubernetes 기본 개념

1. Kubernetes란?

2. 왜 필요한가?

3. Kubernetes 아키텍처

4. Kubernetes 핵심 리소스

5. Docker <-> Kubernetes 관계

이번에 Docker에 fastapi를 이미지로 띄워서 백엔드를 만들어보고 있기 때문에,
Docker에 대해서 한번 공부를 해보고 넘어가는 글을 작성하겠습니다.

🐳 Docker 기본 개념

1. 컨테이너(Container)란 무엇이며 기존 가상화와 컨테이너(Container) 기반의 가상화의 차이점.


컨테이너(Container)의 정의.

  • 컨테이너는 애플리케이션과 그 실행 환경(라이브러리, 설정, 종속성)을 하나의 독립된 단위로 패키징하여, 어디서나 동일하게 실행될 수 있도록 만든 가상화 기술(단위)

  • Docker 컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정 등 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 경량의 독립 실행형 소프트웨어 패키지

  • “가벼운 가상머신”처럼 보이지만, 사실은 호스트 OS의 커널을 공유하면서 격리된 공간에서 실행됨.

  • 컨테이너는 종속성, 필요한 라이브러리 및 바이너리와 함께 애플리케이션을 컨테이너 이미지라고 하는 독립된 패키지로 패키지화하여 여러 컴퓨팅 환경에 쉽게 배포 가능

  • 즉, OS레벨에서 어플리케이션 실행 환경을 격리함으로써 마치 다른 OS에서 동작하는 것과 같은 가상 실행 환경을 제공하는 것.

  • "컨테이너 기반 가상화"는 기존 가상화와 달리,
    • '하이퍼바이저' 위에서 여러 개의 Guest OS를 실행하는 대신
    • 호스트 OS 커널을 사용하여, 격리된 여러 개의 컨테이너를 실행. !
  • 즉, 컨테이너형 가상화는 Guest OS를 사용하지 않고
    Host OS에 컨테이너형 가상화 소프트웨어를 설치.
    • 기존 가상화에 비해 컨테이너화가 '더 가볍고 효율적'

컨테이너(Container)의 등장 배경.

과거에는 애플리케이션을 서버에 배포하려면 다음과 같은 문제가 있었습니다.

  • 서버마다 운영체제(OS)와 라이브러리 버전이 다름
    → 개발 환경과 운영 환경의 차이로 인한 오류 발생

  • 하나의 서버에 여러 애플리케이션이 설치되면
    → 서로 다른 라이브러리 버전이 충돌

  • 새로운 서버를 세팅하려면 OS 설치부터 필요한 패키지 설치까지 많은 시간이 소요됨

이 문제를 해결하기 위해 가상머신(VM)이 등장했지만,
VM은 무겁고 성능 손실이 큰 단점이 있었습니다.

컨테이너는 VM보다 가볍고 빠른 대안으로 등장.

컨테이너(Container)의 핵심 특징.

  • 격리성 (Isolation)

    • 각 컨테이너는 CPU, 메모리, 파일시스템, 네트워크 공간을 독립적으로 가진 것처럼 동작.
  • 이식성 (Portability)

    • 한 환경에서 실행되는 컨테이너는 다른 환경에서도 동일하게 동작.
  • 경량성 (Lightweight)

    • 자체 OS를 가지는 VM과 달리, 컨테이너는 Host OS커널을 공유하기 때문에 빠르고 자원 효율적.
  • 불변성 (Immutable)

    • 실행 중 컨테이너는 변경하지 않고, 새로운 버전을 배포할 땐 아예 새로운 이미지를 생성.

컨테이너(Container)의 내부 구조.

컨테이너는 '리눅스 커널 기능'을 활용해서 구현
대표적으로 2가지가 핵심.

    1. Namespace

      • 격리 기술
      • 프로세스, 네트워크, 파일시스템을 각각 분리
      • 예) 내 컨테이너의 PID 1과 다른 컨테이너의 PID 1은 서로 모름
    1. Cgroups(Control Groups)
      • 자원 할당 기술
      • CPU, 메모리, 디스크 I/O 사용량 제한
    1. Union File System(UnionFS)
      • 계층적 파일시스템
      • Docker 이미지는 여러 레이어로 구성되며, 변경 사항만 기록
        -> 빌드/배포 속도 향상.

VM(가상머신) vs 컨테이너

항목가상머신(VM)컨테이너
실행 방식하이퍼바이저 위에 Guest OS 실행Host OS 커널 공유
크기수 GB (OS 포함)수백 MB ~ 수십 MB
부팅 시간수 분수 초
격리 방식하드웨어 수준 격리OS 커널 수준 격리
효율성무겁고 자원 낭비가볍고 효율적

📌 비유

  • VM = 아파트 한 채 (전기·수도·가스 각각 설치)
  • 컨테이너 = 오피스텔 한 층 (공용 전기·수도, 각 방은 격리됨)

2. Docker란 무엇인가??


정의

  • Docker는
    • "컨테이너(Container) 기반 가상화 기술"을 이용하여,
    • 애플리케이션과 그 실행 환경(라이브러리, 런타임, OS 설정 등)을 하나의 독립된 패키지로 묶어서
    • "어떤 환경에서도 동일하게 실행되도록 보장하는 오픈소스 플랫폼".

Docker의 역할.

    1. 컨테이너 런타임 제공 (containerd, runc)
    • 컨테이너를 실제로 실행시키는 "엔진" 역할.
    • "runc" : 리눅스 커널의 Namespace와 Cgroups를 직접 제어하는 저수준 도구
    • "containerd" : runc를 감싸서 더 편리한 기능을 제공하는 고수준 런타임
    • Docker는 내부적으로 containerd를 사용 ( 요즘, Kubernetes도 동일 )

📌 실무 팁
최신 Kubernetes는 더 이상 Docker 엔진 자체를 쓰지 않고,
containerd 같은 CNCF 표준 런타임을 사용 (Dockershim 제거)

    1. 이미지 빌드 도구 제공
    • 개발자가 작성한 Dockerfile을 기반으로, Docker Image를 빌드.

    • 이미지 = 계층(Layer) 구조

      • Base Image (python:3.12)

      • Dependency Layer (pip install)

      • App Layer (소스 코드)

    • 예시 : Python 웹앱 빌드.

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]

📌 주의
requirements.txt 변경이 잦다면 COPY 순서 최적화 필요
멀티스테이지 빌드를 사용하여 이미지 크기를 줄이는 게 베스트 프랙티스

    1. 컨테이너 이미지 레지스트리 제공.

      • 이미지를 저장/공유하는 저장소

      • 공식 : Docker Hub

      • 흐름

          1. docker build -t myapp:1.0 . → 이미지 생성
          1. docker push myrepo/myapp:1.0 → 레지스트리에 업로드
          1. 서버에서 docker pull myrepo/myapp:1.0 → 실행

📌 실무 포인트
민감 서비스는 Public Registry 금지 → 프라이빗 레지스트리 활용
이미지 태그는 latest 대신 버전 필수 (myapp:1.0.3)

    1. 컨테이너 네트워킹 & 데이터 관리 지원
    • 네트워킹
      • 기본 모드 :Bridge
      • 고급 모드 : Host, Overlay(멀티 호스트 환경에서 사용)
docker network create mynet
docker run -d --name db --network mynet mysql:8.0
docker run -d --name app --network mynet myapp:1.0

-> 동일 네트워크에 있으면 컨테이너끼리 DNS 이름으로 통신 가능

  • 데이터 관리 ( Volume )
    • 컨테이너는 원래 '휘발성'
    • Volume으로 데이터 영속성 확보
docker volume create mydata
docker run -d \
  -v mydata:/var/lib/mysql \
  mysql:8.0

📌 실무 팁
DB, 로그 저장소 → 반드시 Volume 사용
Config/Secret은 Volume이 아닌 환경변수 or Secret Manager 사용 권장

Docker의 내부 동작 원리.

Docker의 클라이언트-서버 구조.
  • Docker는 단순한 실행 도구가 아니라 클라이언트-서버 아키텍처로 설계되어 있습니다.

  • 구성 요소

    • Docker CLI

      • 사용자가 입력하는 명령어 인터페이스 (docker run, docker build)
      • CLI -> Daemon과 통신 ( REST API, Unix Socket )
    • Docker Daemon(docckerd)

      • 컨테이너를 실제로 실행하고 관리
      • Docker의 핵심 엔진
      • 컨테이너 생성, 네트워크 설정, 볼륨 관리 담당
      • 내부적으로 containerd와 runc를 통해 실제 컨테이너 실행.
    • Docker Registry: 이미지 저장소 (공개/비공개)

      • 컨테이너 이미지 저장소
      • Public : Docker Hub
      • Private : AWS ECR, GCP GCR, Azure ACR, Harbor 등
    • containerd

      • 컨테이너의 생명주기 관리 (시작, 중지, 삭제)
      • Kubernetes에서도 공식 지원
    • runc

      • 리눅스 커널의 Namespace와 Cgroups를 이용해 컨테이너 실행
      • 가장 하위 레벨 실행기
+-------------------+
|   Docker CLI      |   (사용자 명령어 입력)
+-------------------+
         |
         v
+-------------------+
| Docker Daemon     |   (컨테이너 실행/관리)
|  - API Server     |
|  - containerd     |
|  - runc           |
+-------------------+
         |
         v
+-------------------+
| Docker Registry   |   (이미지 저장소: Docker Hub, ECR 등)
+-------------------+
  • 흐름 예시

    • 1.docker run nginx:latest 실행

    • 2.Daemon이 Docker Hub에서 nginx:latest 이미지 다운로드

    • 3.이미지로 컨테이너 생성 및 실행

Docker 컨테이너 실행 흐름.(단계별 동작)
  • 사용자가 docker run nginx:latest 명령을 실행했을 때 내부적으로 일어나는 일.
  • 1️⃣ CLI → Daemon 요청 전달

    • CLI에서 docker run nginx:latest 입력

    • CLI는 Unix Socket(/var/run/docker.sock) 또는 TCP를 통해 Daemon에 API 요청

  • 2️⃣ 이미지 존재 여부 확인

    • Daemon이 로컬 캐시에 nginx:latest 이미지가 있는지 확인

    • 없다면 Registry(Docker Hub)에서 다운로드(Pull)

docker pull nginx:latest

3️⃣ 이미지 다운로드 & 저장

  • Registry에서 Layer 단위로 이미지 다운로드

  • 예: nginx:latest

    • Base Layer: Debian OS

    • Layer 2: Nginx 설치 파일

    • Layer 3: 설정 파일

📌 Docker 이미지 = 여러 레이어의 합 (UnionFS)
변경된 레이어만 다운로드 → 속도 & 용량 최적화

4️⃣ 컨테이너 생성

  • Daemon이 runc를 호출하여 Namespace & Cgroups 설정

  • 컨테이너 내부에 격리된 파일시스템, 네트워크, 프로세스 공간 구성

5️⃣ 컨테이너 실행

  • nginx 프로세스를 컨테이너 내에서 실행

  • 외부와 연결된 네트워크 포트 바인딩

docker run -d -p 8080:80 nginx:latest

👉 결과: 브라우저에서 http://localhost:8080 접속 시 Nginx 기본 페이지 확인 가능

사용자
   |
   v
Docker CLI (docker run nginx)
   |
   v
Docker Daemon (dockerd)
   |--- 이미지 로컬에 존재? --- 아니오 ---> Registry에서 Pull
   |--- 예시: Docker Hub
   |
   v
containerd → runc
   |
   v
리눅스 커널 (Namespaces, Cgroups)
   |
   v
컨테이너 (nginx 프로세스 실행)

3 기존 방식 vs Docker.


항목전통 VM 방식Docker 컨테이너
실행 방식하이퍼바이저 위에 Guest OS 실행Host OS 커널 공유
OS 필요 여부VM마다 OS 필요 (무겁다)Host OS 공유, 컨테이너마다 OS 불필요
성능OS 부팅 포함 → 느림프로세스 단위 실행 → 빠름
자원 사용VM마다 수 GB 필요수 MB ~ 수백 MB
이식성환경에 따라 동작 불가 가능성 ↑동일 이미지면 어디서든 실행
배포 방식수동 설치, 스크립트 관리docker run 한 줄로 실행
확장성VM 추가/삭제 필요컨테이너 복제/삭제로 즉시 확장

비유

  • VM = 독립된 아파트 (각자 전기·수도·가스 설치)
  • Docker = 한 건물의 오피스텔 (공용 전기/수도, 각 세대 격리)

실제 상황 예시.

  • 기존 배포 방식

    • 1.서버에 SSH 접속

    • 2.OS 업데이트

    • 3.Python, Node.js, Java 설치

    • 4.requirements.txt 또는 package.json에 따라 라이브러리 설치

    • 5.애플리케이션 실행

  • ⚠️ 문제점

    • 서버마다 환경 불일치
    • 배포 속도 느림
    • 확장 어려움
  • Docker 배포 방식.

      1. 개발자가 Dockerfile 작성
      1. 이미지를 빌드해서 Docker Hub에 업로드
      1. 서버에서는 단순히 docker run 실행
  • ✅ 장점

    • 환경 독립성 보장
    • 이미지 하나로 어디서든 동일 동작
    • 확장성 우수 ( 컨테이너 복제 )
    • 자동화 용이(CI/CD와 결합)

4. Docker의 핵심 개념.


4-1. Docker Image

📍 정의
  • Docker Image는 애플리케이션 실행을 위한 읽기 전용 템플릿입니다.
  • 컨테이너를 실행할 때 참조하는 스냅샷(청사진) 역할을 합니다.

📍 구조 (Layered Architecture)
  • Docker Image는 레이어(layer) 구조로 이루어져 있습니다.

    • Base Image (ubuntu:20.04)
      • 가장 아래 레이어
      • ex) ubuntu:20.04, alpine:3.19, python:3.12
    • Application Layer (RUN apt install ...)
      • 소프트웨어 설치, 라이브러리 추가
      • 예: RUN apt-get install, RUN pip install -r requirements.txt
    • Config Layer (COPY . /app)
      • 애플리케이션 코드와 설정 파일 추가
      • 예: COPY . /app, CMD ["node", "server.js"]
[ Layer 3: Config Layer  ]   ← COPY, CMD, ENTRYPOINT
[ Layer 2: App Layer     ]   ← RUN npm install, pip install
[ Layer 1: Base Image    ]   ← ubuntu:20.04 / alpine:3.19
----------------------------
        Docker Image
  • 변경 시 레이어 단위로 기록 -> 빠른 빌드 가능.

  • 레이어 구조는 Union File System (UnionFS)을 이용하여 관리됩니다.

📍 레이어 저장 원리
  • 이미지 빌드 시 , "변경된 레이어만 새로 저장"

  • 캐시 활용 가능 -> 빠른 빌드.

  • ex)

FROM python:3.12
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt   # Application Layer
COPY . .                              # Config Layer
CMD ["python", "main.py"]

👉 requirements.txt를 수정하지 않으면, pip install 단계가 캐시되어 빌드 시간 단축

📍 실무 주의사항.
    1. 이미지 크기 최적화
    • alpine 기반 이미지 사용 (python:3.12-slim 등)

    • 멀티 스테이지 빌드 활용

    1. 보안
    • 공식 이미지 사용 권장

    • 취약점 검사: docker scan, trivy

    1. 버전 관리
    • latest 대신 구체적 태그 사용 (nginx:1.25.1)

4-2. Docker Container.

📍 정의.
  • Docker Container는
    Docker Image를 실행한 인스턴스(프로세스)입니다.

  • 실제로 애플리케이션이 동작하는 환경이며, OS 레벨에서 격리된 공간을 사용합니다.

📍 특징.
  • 휘발성

    • 컨테이너를 중지/삭제하면 내부 데이터는 사라짐
    • 영속성이 필요한 경우 -> Volume 사용
  • 격리성

    • 각 컨테이너는 독립된 파일시스템, 네트워크, PID 공간 보유
  • 경량성

    • OS 전체를 포함하지 않고, Host OS 커널 공유

📍 컨테이너 실행 예시.
# nginx 실행
docker run -d -p 8080:80 nginx:1.25
  • -d: 백그라운드 실행

  • -p: 포트 매핑 (Host:Container)

  • nginx:1.25: 사용할 이미지

👉 브라우저에서 http://localhost:8080 접속 시 nginx 서버 응답

📍 데이터 유지 (Volume 활용)
docker run -d \
  -v mydata:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=1234 \
  mysql:8.0
  • -v mydata:/var/lib/mysql → 볼륨 마운트

  • 컨테이너 삭제해도 /var/lib/mysql에 데이터 보존

📍 컨테이너 수명 주기
create → start → (running) → stop → rm
  • docker ps → 실행 중인 컨테이너 확인

  • docker stop "id" → 중지

  • docker rm "id" → 삭제

📍 실무 주의사항
    1. 로그 관리.

      • docker logs <컨테이너명>으로 확인 가능

      • 운영 환경에서는 ELK Stack 또는 Loki로 중앙화 필요

    1. 리소스 제한.

      • 컨테이너별 CPU/메모리 제한 가능.
docker run -d --cpus="1.0" --memory="512m" myapp:1.0
    1. 보안.

      • root 권한 실행 지양

      • USER 명령어로 비루트 계정 지정

📊 정리 다이어그램.

4-3. Docker Volume

📍 정의.
  • Docker Volume은 컨테이너의 데이터를 영구적으로 저장하기 위한 Docker의 공식 메커니즘입니다.

  • 기본적으로 컨테이너 파일시스템은 휘발성이므로, 컨테이너 삭제 시 데이터도 함께 삭제됩니다.

  • Volume을 사용하면 데이터가 호스트 머신에 저장되어, 컨테이너 재시작/재생성에도 데이터 유지 가능.

  • 데이터 영속성을 위해 사용.
docker run -d \
  -v /mydata/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=1234 \
  mysql:8.0

-> 컨테이너 삭제해도 /mydata/mysql 에 데이터 유지.

📍 동작 원리.
  • Volume은 Host 파일시스템의 특정 디렉토리에 저장됨

  • 컨테이너의 특정 경로에 마운트되어, 컨테이너 안팎에서 동일한 데이터를 읽고 쓸 수 있음

  • Docker가 자체적으로 Volume을 관리 (/var/lib/docker/volumes/)

📍 Volume 유형.
    1. Named Volume
    • Docker가 관리하는 볼륨

    • 예: -v mydata:/var/lib/mysql

    • 호스트 경로를 직접 지정하지 않고 이름만 부여

    1. Bind Mount
    • 호스트의 디렉토리를 직접 지정

    • 예: -v /mydata/mysql:/var/lib/mysql

    • 유연하지만, 호스트 경로 변경 시 관리 어려움

    1. tmpfs Mount
    • 메모리에만 존재하는 임시 스토리지 (속도 빠름, 컨테이너 종료 시 사라짐)

    • 예: 캐싱, 세션 데이터 저장용

📍 사용 예시.
# Named Volume
docker volume create mydata

docker run -d \
  -v mydata:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=1234 \
  mysql:8.0
# Bind Mount
docker run -d \
  -v /mydata/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=1234 \
  mysql:8.0

📍 실무 주의사항.
    1. DB 컨테이너 → 반드시 Volume 사용
      (데이터 날림 방지)
    1. 환경 분리
    • 개발 환경: Bind Mount (코드 자동 반영 편리)

    • 운영 환경: Named Volume (안정적 관리)

    1. 백업 전략
    • docker run --rm -v mydata:/data busybox tar cvf /backup.tar /data
    1. 보안
    • 민감 데이터는 Docker Secret/ConfigMap(K8s 환경) 활용

4-4. Docker Network.

📍 정의.
  • Docker Network는
    컨테이너 간, 컨테이너 ↔ 외부 간 통신을 가능하게 하는 네트워킹 시스템입니다.

📍 기본 모드.
    1. Bridge(기본 모드)
      • 컨테이너 간 독립된 가상 네트워크 제공
      • 가장 많이 사용되는 방식.
docker network create mynet
docker run -d --name db --network mynet mysql:8.0
docker run -d --name app --network mynet myapp:1.0

👉 app 컨테이너에서 db:3306으로 접속 가능 (DNS 지원)

    1. Host
      • 컨테이너가 Host와 동일한 네트워크 스택 사용.
      • 포트 매핑 불필요 -> 성능 증가
docker run --network host nginx

⚠️ 단점: 포트 충돌 가능성 ↑, 격리 ↓

    1. None
      • 네트워크 미연결 모드
      • 보안 목적 또는 특정 테스트용
docker run --network none alpine
    1. Overlay(멀티 호스트 환경)
      • 여러 서버(Node)에 걸쳐 있는 컨테이너끼리 통신 가능
      • Docker Swarm, Kubernetes에서 사용
      • VXLAN 기반으로 구현되어, 서로 다른 물리 서버에서도 네트워크 구성 가능.

📍 네트워크 관리 명령어.
docker network ls          # 네트워크 목록 확인
docker network inspect mynet  # 네트워크 상세 정보
docker network create mynet   # 사용자 정의 네트워크 생성
docker network connect mynet mycontainer  # 컨테이너 연결

📍 실무 주의사항.
    1. Bridge 모드

      • 마이크로서비스 앱에서 가장 일반적
    1. Host 모드

      • 고성능 로깅, 모니터링 시스템에서 활용
    1. Overlay 모드

      • Swarm / Kubernetes 클러스터 환경에서 필수
    1. 보안

      • 불필요한 네트워크 포트는 닫기

      • 방화벽 및 네트워크 정책(NACL, Security Group 등) 병행

☸️ Kubernetes 기본 개념

1. Kubernetes란?


정의.

-Kubernetes(K8s)는 컨테이너 기반 애플리케이션의 배포, 확장, 관리, 네트워킹을 자동화하는 오케스트레이션 플랫폼.

2. 왜 Kubernetes가 필요한가?


Docker만의 한계점.

  • 컨테이너 장애 시 자동 복구 불가

  • 트래픽 급증 시 컨테이너 수동 확장

  • 컨테이너 IP가 유동적

  • 무중단 배포 불가

Kubernetes 해결책.

  • Self-Healing (죽은 Pod 자동 재시작)

  • Auto Scaling (트래픽에 따라 Pod 수 조절)

  • Service Discovery (고정 주소 제공)

  • Rolling Update & Rollback (무중단 배포)

3. Kubernetes 아키텍처


+----------------------+
|   Control Plane      |
|----------------------|
| API Server           |
| etcd (DB)            |
| Scheduler            |
| Controller Manager   |
+----------+-----------+
           |
+----------v----------+
|     Worker Node     |
| kubelet + kube-proxy|
| Container Runtime   |
+---------------------+

Control Plane

  • API Server: 명령 접수

  • etcd: 상태 저장

  • Scheduler: Pod 배치 결정

  • Controller Manager: 상태 유지

Worker Node

  • Kubelet: Pod 실행

  • Kube-proxy: 네트워크 라우팅

  • Runtime: Docker/containerd

4. Kubernetes 핵심 리소스


Pod.

  • 가장 작은 실행 단위

  • 1개 이상의 컨테이너 포함 가능

Deployment.

  • Pod를 관리하는 상위 리소스

  • 롤링 업데이트 지원

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:1.25
          ports:
            - containerPort: 80

Service.

  • Pod 집합에 접근할 수 있는 고정 Endpoint 제공.

  • 유형: ClusterIP, NodePort, LoadBalancer.

Ingress.

  • 도메인 기반 라우팅.

  • HTTPS 지원.

ConfigMap & Secret.

  • ConfigMap: 설정값 저장.

  • Secret: 비밀번호, 토큰 등 민감정보 저장 (Base64 인코딩)

Namespace.

  • 리소스를 논리적으로 구분 (dev, stage, prod)

5. Docker <-> Kubernetes 관계


기능DockerKubernetes
실행 단위ContainerPod
실행 정의DockerfileDeployment YAML
확장수동 run 반복ReplicaSet 자동 확장
복구수동 재시작Self-Healing
네트워킹Docker NetworkService + Ingress
배포 전략없음Rolling Update, Blue-Green, Canary

0개의 댓글