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!