🧱 컨테이너 관리 초급 요약

✅ 1. 컨테이너란?

  • 애플리케이션을 작고, 독립된 단위로 묶는 기술.
  • 내부에 실행파일, 설정파일, 라이브러리까지 포함 → 어디서나 동일하게 실행 가능.
  • 대표 도구: Docker

👉 예: 앱을 설치하려면 이것저것 환경 맞추는 게 힘들지만, Docker는 “앱 통조림”처럼 필요한 걸 다 넣어서 실행하는 방식이야.


✅ 2. 왜 컨테이너 관리가 필요할까?

컨테이너가 많아지면 누가 언제, 어디서 실행되는지 관리하기 어려워짐
→ 그래서 자동으로 관리해주는 시스템이 필요해!

👉 이걸 도와주는 게 바로 컨테이너 오케스트레이션 도구(Kubernetes)


✅ 3. 컨테이너 관리에 필요한 주요 개념

항목설명
이미지(Image) 컨테이너를 만들기 위한 ‘설치 파일 묶음’
컨테이너(Container) 실행 중인 이미지
Pod Kubernetes에서 컨테이너를 담는 최소 단위
노드(Node) 컨테이너를 실행하는 컴퓨터
클러스터(Cluster) 여러 노드가 모인 관리 단위
레이블(Label) 컨테이너에 태그처럼 붙이는 정보 (선택/관리 용이)
 

✅ 4. 대표 도구들

기능도구
컨테이너 실행 Docker
대규모 운영 관리 Kubernetes
이미지 저장소 Docker Hub
로그 및 모니터링 Grafana, Prometheus
보안 검사 Trivy
 

✅ 5. 컨테이너 관리 흐름

plaintext
 

[개발자가 코드 작성]
     ↓
[Docker로 이미지 생성]
     ↓
[이미지를 Docker Hub에 저장]
     ↓
[Kubernetes가 이미지를 가져와 컨테이너 실행]
     ↓
[자동 확장, 복구, 상태 확인 등 관리]


✅ 6. 알아두면 좋은 기초 용어

  • YAML: Kubernetes 설정 파일 작성할 때 쓰는 형식
  • kubectl: 쿠버네티스를 제어하는 명령어 도구
  • Deployment: 컨테이너를 몇 개 실행할지 관리하는 설정

🔁 예시 시나리오 (입문형)

“쇼핑몰 서버를 Docker로 만들고 Kubernetes로 3개 실행되게 설정해요. 하나 죽으면 자동으로 다시 살아나요.”


"쇼핑몰 서버를 Docker로 만들고 Kubernetes로 3개 실행되게 하고, 하나가 죽으면 자동으로 복구되게 하는 실습"을 10% 수준으로 단계별 설명해줄게.
(기초부터 Kubernetes 자동 복구까지 포함)


✅ 목표

  • 쇼핑몰 웹서버를 Docker 컨테이너로 만들고
  • Kubernetes에서 3개 Pod로 실행
  • Pod 하나가 죽으면 자동으로 다시 생성됨

🧱 1단계: Dockerfile로 웹 서버 만들기

Dockerfile
 
 
# 📄 Dockerfile
FROM nginx:latest
COPY ./index.html /usr/share/nginx/html/index.html
 
html
 
 
<!-- 📄 index.html -->
<h1>내 쇼핑몰에 오신 걸 환영합니다!</h1>

✅ 빌드 & 테스트

bash
 
 
docker build -t myshop-web .
docker run -d -p 8080:80 myshop-web

🧱 2단계: Docker Hub에 이미지 올리기 (공개 허용 시)

bash
 
docker tag myshop-web YOUR_DOCKER_ID/myshop-web
docker push YOUR_DOCKER_ID/myshop-web
 

Docker Hub 계정이 필요해요.


🧱 3단계: Kubernetes에서 배포

📄 deployment.yaml

yaml
 
 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myshop-web
spec:
  replicas: 3  # 👉 Pod 3개 실행
  selector:
    matchLabels:
      app: myshop-web
  template:
    metadata:
      labels:
        app: myshop-web
    spec:
      containers:
      - name: myshop-web
        image: YOUR_DOCKER_ID/myshop-web  # 👉 본인 Docker Hub 이미지 주소
        ports:
        - containerPort: 80

✅ 배포 명령어

bash
 
 
kubectl apply -f deployment.yaml

✅ 상태 확인

bash
 
kubectl get pods

3개가 떠야 하고, 이름은 myshop-web-XXXX 형식일 거예요.


🧱 4단계: 하나 죽여보기 (자동 복구 테스트)

bash
 
 
kubectl delete pod <pod-name>
 
예시: kubectl delete pod myshop-web-7c58bcdf44-vqf5s

🔁 결과: Pod가 삭제되어도 Kubernetes가 자동으로 다시 생성함


🧱 5단계: 서비스로 외부 노출

📄 service.yaml

yaml
 
 
apiVersion: v1
kind: Service
metadata:
  name: myshop-service
spec:
  selector:
    app: myshop-web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: NodePort  # 👉 테스트용 외부 노출

✅ 적용

bash
 
 
kubectl apply -f service.yaml
kubectl get svc
 
EXTERNAL-IP:PORT 정보로 접속하면 브라우저에서 쇼핑몰 화면이 나올 거예요.

✅ 요약

기능구성
쇼핑몰 서버 Nginx + HTML
컨테이너 수 3개 (replicas 설정)
장애 복구 Kubernetes가 자동 재시작
외부 접속 NodePort Service 사용
 

실습 환경 없이 연습만 하고 싶다면 모의 문제구성도 설명으로도 도와줄게.
다음은 Helm으로 배포하는 방식도 알려줄까?

+ Recent posts