1 cd mkdir 5 cd 5 docker run -d -p 8080:80 --name my-web nginx 2 docker run --rm -it -p 8080:80 nginx 3 Step 1: app.py (간단한 웹 서버) from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello from Docker!" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) Step 2: Dockerfile (표준 양식) 파일 확장자 없이 Dockerfile이라는 이름으로 저장합니다. Dockerfile # 1. 베이스 이미지 설정 (Python 3.9 사용) FROM python:3.9-slim # 2. 작업 디렉토리 설정 WORKDIR /app # 3. 필요한 라이브러리 설치 RUN pip install flask # 4. 소스 코드 복사 COPY app.py . # 5. 컨테이너 시작 시 실행할 명령어 CMD ["python", "app.py"] C:\Users\User>cd c:\0-5 c:\0-5>dir C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: F8F6-415E c:\0-5 디렉터리 2026-02-14 오후 07:10 . 2026-02-14 오후 07:09 182 app.py 2026-02-14 오후 07:10 312 Dockerfile.txt 2개 파일 494 바이트 1개 디렉터리 12,961,550,336 바이트 남음 c:\0-5>rename Dockerfile.txt Dockerfile c:\0-5>dir C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: F8F6-415E c:\0-5 디렉터리 2026-02-14 오후 07:13 . 2026-02-14 오후 07:09 182 app.py 2026-02-14 오후 07:10 312 Dockerfile 2개 파일 494 바이트 1개 디렉터리 12,465,074,176 바이트 남음 3. 터미널에서 실행하기 (핵심 명령어) 파일이 있는 폴더에서 아래 명령어들을 차례로 입력합니다. ① 이미지 빌드 my-python-app이라는 이름의 이미지를 만듭니다. (끝에 마침표 . 주의!) docker build -t my-python-app . ② 컨테이너 실행 방금 만든 이미지를 5000번 포트로 띄웁니다. docker run -d -p 5000:5000 --name my-running-app my-python-app 결과 확인 및 정리 브라우저에서 http://localhost:5000에 접속하여 "Hello from Docker!"가 나오는지 확인합니다. 도커 데스크탑의 'Images' 탭에 my-python-app이 생겼는지, 'Containers' 탭에 my-running-app이 돌아가고 있는지 확인해 보세요. <3> 미니쿠베 1 New-Item -Path 'C:\minikube' -ItemType Directory -Force Invoke-WebRequest -OutFile 'C:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' $oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine) if ($oldPath -notlike '*C:\minikube*') { [Environment]::SetEnvironmentVariable('Path', "$oldPath;C:\minikube", [EnvironmentVariableTarget]::Machine) } 2 # 1. 배포 생성 kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4 # 2. 외부로 노출 (서비스 생성) kubectl expose deployment hello-minikube --type=NodePort --port=8080 # 3. 브라우저로 접속 주소 확인 minikube service hello-minikube 3 kubectl get deployments # 1. 안전하게 기존 배포 삭제 (없어도 상관없습니다) kubectl delete deployment hello-minikube --ignore-not-found=true # 2. 이미지 주소를 가장 최신의 표준 이미지로 변경하여 생성 # 기존 k8s.gcr.io 주소는 가끔 접속이 불안정할 수 있으니 아래 이미지를 써보세요. kubectl create deployment hello-minikube --image=registry.k8s.io/e2e-test-images/echoserver:2.5 # 3. 생성 확인 (여기서 'Running'이 뜰 때까지 약 10~30초 기다려주세요) kubectl get pods -w # 포드가 Running인 것을 확인한 후 입력 kubectl port-forward deployment/hello-minikube 8080:8080 http://localhost:8080에 접속 4 # 미니쿠베 삭제 # 1. 실행 중인 클러스터 중지 minikube stop # 2. 클러스터 및 관련 가상 머신(또는 컨테이너) 삭제 minikube delete 2. 모든 캐시 및 설정까지 완전히 삭제하기 (초기화) 설정 오류가 꼬여서 완전히 처음 상태로 되돌리고 싶을 때 사용합니다. # 모든 프로필과 캐시 데이터 삭제 minikube delete --all --purge 그 후, 사용자 폴더에 남은 숨겨진 설정 폴더들을 수동으로 지워주면 완벽합니다. C:\Users\User\.minikube (설정 및 이미지 캐시) C:\Users\User\.kube (kubectl 접속 설정) 프로그램 자체를 Windows에서 제거하기 이제 더 이상 Minikube를 사용하지 않아 프로그램을 삭제하고 싶다면 설치 방식에 따라 다릅니다. 설치 파일(.exe)로 설치한 경우: 제어판 > **'프로그램 추가/제거'**에서 minikube를 찾아 제거합니다. 직접 다운로드해서 환경 변수(Path)만 잡은 경우: C:\minikube 폴더(또는 본인이 저장한 경로)를 통째로 삭제하고, 시스템 환경 변수의 Path에서 해당 경로를 제거합니다. minikube status # "명령어를 찾을 수 없습니다" 또는 "No minikube cluster" 메시지 확인 <6> EKS 생성 1 서울 리전으로 변경 클라우드 포메이션으로 명령서버 EC2 1대 생성 EC2 키페어, Access-key, Secret-key 미리 준비 CloudFormation 실행 2 # 명령어 실습 EC2 Login 3 # EKS 생성할수 있는 권한 부여 [root@kops-ec2 environment]# aws configure AWS Access Key ID [None]: AKIA2ESLMQ AWS Secret Access Key [None]: JGgwvJFIQS2d35bM Default region name [None]: ap-northeast-2 Default output format [None]: < 엔터> [root@kops-ec2 environment]# aws s3 ls 2026-01-11 17:23:29 cf-templates-1m33dxyu90t4w-ap-northeast-2 2026-01-21 13:29:28 cf-templates-1m33dxyu90t4w-us-east-1 4 cd mkdir -p 5 cd 5 export AWS_REGION=ap-northeast-2 echo ${AWS_REGION} 5 # eks 생성하기1 무료 계정으로 생성가능한 인스턴스 instanceType: m7i-flex.large 생성 cat << EOF > eks-demo-cluster.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: eks-demo # 생성할 EKS 클러스터명 region: ${AWS_REGION} # 클러스터를 생성할 리젼 version: "1.34" vpc: cidr: "192.168.0.0/16" # 클러스터에서 사용할 VPC의 CIDR managedNodeGroups: - name: node-group # 클러스터의 노드 그룹명 instanceType: m7i-flex.large # 클러스터 워커 노드의 인스턴스 타입 desiredCapacity: 1 # 클러스터 워커 노드의 갯수 volumeSize: 20 # 클러스터 워커 노드의 EBS 용량 (단위: GiB) iam: withAddonPolicies: imageBuilder: true # AWS ECR에 대한 권한 추가 albIngress: true # albIngress에 대한 권한 추가 cloudWatch: true # cloudWatch에 대한 권한 추가 autoScaler: true # auto scaling에 대한 권한 추가 cloudWatch: clusterLogging: enableTypes: ["*"] EOF eksctl create cluster -f eks-demo-cluster.yaml (20분 소요 됨) # 무료 계정으로 가능한 서버 t3.micro t3.small c7i-flex.large 2/4 m7i-flex.large 2/8 5 타이머 수정 > 13분 지정 https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1 6 k get no (topasvga@eks-demo:N/A) [root@kops-ec2 environment]# k get no NAME STATUS ROLES AGE VERSION ip-192-168-11-235.ap-northeast-2.compute.internal Ready 61s v1.34.2-eks-ecaa3a6 7 다른 터미널에서 .모니터링 watch -d kubectl get no,svc,pod,deploy,rs 8 # 서버 생성 kubectl create deployment websrv --image=nginx --port=80 --replicas=2 kubectl expose deployment websrv --port=80 --type=LoadBalancer 2분후, 브라우저로 웹접속 확인 로드밸런서 생성에 2분 걸림 Welcome to nginx!