클라우드 + DevOps/Docker

Docker 실습 :: 윈도우 Window에서 Docker 설치 과정

gamjadori 2024. 4. 6. 12:44
728x90

<Docker 실습 :: 윈도우 Window에서 Docker 설치 과정>

  • winget > kubectl > minikube 순으로 설치 예정
  • winget: Microsoft가 개발한 윈도우 용 소프트웨어 설치 관리자
  • Windows PowerShell에서 설치해야 함

 

1. winget 설치

PS C:\\Users\\admin> $progressPreference = 'silentlyContinue'
Write-Information "Downloading WinGet and its dependencies..."
Invoke-WebRequest -Uri <https://aka.ms/getwinget> -OutFile Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
Invoke-WebRequest -Uri <https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx> -OutFile Microsoft.VCLibs.x64.14.00.Desktop.appx
Invoke-WebRequest -Uri <https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.7.3/Microsoft.UI.Xaml.2.7.x64.appx> -OutFile Microsoft.UI.Xaml.2.7.x64.appx
Add-AppxPackage Microsoft.VCLibs.x64.14.00.Desktop.appx
Add-AppxPackage Microsoft.UI.Xaml.2.7.x64.appx
Add-AppxPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
  • winget 설치 확인
PS C:\\Users\\admin> winget --version
v1.6.3482

 

2. winget을 통해 DockerDesktop 설치

  • DockerDesktop: 컨테이너화된 응용 프로그램을 개발, 테스트 및 배포하기 위한 도구
  • 개발자들에게 손쉽게 컨테이너 기술을 활용할 수 있도록 도와주는 툴
PS C:\\Users\\admin> winget install e- --id Docker.DockerDesktop

>> 컴퓨터 껐다 켜면 Docker 설치 가능

 

3. 윈도우에 kubectl 설치

  • kubectl: Kubernetes 클러스터와 상호 작용하기 위한 커맨드 라인 인터페이스 도구로, Kubernetes 클러스터를 관리하고, 애플리케이션을 배포하고, 모니터링
PS C:\\Users\\admin> winget install -e --id Kubernetes.kubectl

  • 버전 확인
PS C:\\Users\\admin> kubectl version --client
Client Version: v1.29.1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
PS C:\\Users\\admin> winget search kubectl
이름    장치 ID            버전   일치         원본
-----------------------------------------------------
kubectl Kubernetes.kubectl 1.29.0              winget
kubens  ahmetb.kubens      0.9.5  Tag: kubectl winget
kubectx ahmetb.kubectx     0.9.5  Tag: kubectl winget

 

4. minikube 설치

  • minikube: 로컬 환경에서 Kubernetes 클러스터를 실행하고 테스트하는 데 사용되는 도구
  • 쿠버네티스를 로컬에서 실행할 수 있는 도구
  • 단일 노드 구성으로 이중화가 보장되지 않기 때문에 상용에서는 사용 불가
  • 로컬 가상 머신에 쿠버네티스를 구성하기 때문에 하이퍼바이저 설치 필요
  • kubectl 사용

PS C:\\Users\\admin> winget install minikube

** 설치하고 나서 Windows PowerShell 터미널 새로 열어야 함 (환경변수가 변경되었기 때문에 적용하기 위해서는 새로운 터미널)

  • minikube 시작
PS C:\\Users\\admin> minikube start

 

<Docker Desktop에서 확인 가능>

 

5. 터미널 프로그램 설치

PS C:\\Users\\admin> winget search termius
PS C:\\Users\\admin> winget install --id Termius.Termius

 

<간단한 Minikube 실습>

  • Git Bash에서 Minikube 실행
admin@DESKTOP-4M8LFU2 MINGW64 ~
$ minikube start
admin@DESKTOP-4M8LFU2 MINGW64 ~
$ minikube status
W0214 11:09:40.130349   15808 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\\Users\\admin\\.docker\\contexts\\meta\\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\\meta.json: The system cannot find the path specified.
minikube
type: Control Plane
**host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured**

 

<명령어 모음>

1. kubectl version -o yaml: Kubernetes 클러스터의 버전 정보를 YAML 형식으로 출력

admin@DESKTOP-4M8LFU2 MINGW64 ~
$ kubectl version -o yaml
clientVersion:
  buildDate: "2024-01-17T15:51:03Z"
  compiler: gc
  gitCommit: bc401b91f2782410b3fb3f9acf43a995c4de90d2
  gitTreeState: clean
  gitVersion: v1.29.1
  goVersion: go1.21.6
  major: "1"
  minor: "29"
  platform: windows/amd64
kustomizeVersion: v5.0.4-0.20230601165947-6ce0bf390ce3
serverVersion:
  buildDate: "2023-10-18T11:33:18Z"
  compiler: gc
  gitCommit: a8a1abc25cad87333840cd7d54be2efaf31a3177
  gitTreeState: clean
  gitVersion: v1.28.3
  goVersion: go1.20.10
  major: "1"
  minor: "28"
  platform: linux/amd64

 

2. kubectl get pods: 현재 실행 중인 파드의 목록을 가져오는 Kubernetes CLI 명령어

admin@DESKTOP-4M8LFU2 MINGW64 ~
$ kubectl get pods -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-5dd5756b68-f4g7g           1/1     Running   2 (11m ago)   22h
kube-system   etcd-minikube                      1/1     Running   2 (11m ago)   22h
kube-system   kube-apiserver-minikube            1/1     Running   2 (11m ago)   22h
kube-system   kube-controller-manager-minikube   1/1     Running   2 (11m ago)   22h
kube-system   kube-proxy-4zgpq                   1/1     Running   2 (11m ago)   22h
kube-system   kube-scheduler-minikube            1/1     Running   2 (11m ago)   22h
kube-system   storage-provisioner                1/1     Running   4 (11m ago)   22h

 

3. kubectl get namespaces: Kubernetes 클러스터 내의 모든 네임스페이스의 목록을 가져오는 명령

admin@DESKTOP-4M8LFU2 MINGW64 ~
$ kubectl get namespaces
NAME              STATUS   AGE
default           Active   22h
kube-node-lease   Active   22h
kube-public       Active   22h
kube-system       Active   22h

 

4. kubectl config use-context minikube: 현재 작업하는 Kubernetes 클러스터의 컨텍스트를 minikube로 변경하는 명령

  • 여러 Kubernetes 클러스터에 접속할 때 사용
admin@DESKTOP-4M8LFU2 MINGW64 ~/.kube
$ kubectl config use-context minikube
Switched to context "minikube".

 

5. kubectl config get-contexts: 액세스할 수 있는 모든 Kubernetes 클러스터의 컨텍스트 목록을 가져오는 명령

admin@DESKTOP-4M8LFU2 MINGW64 ~/.kube
$ kubectl config get-contexts
CURRENT   NAME       CLUSTER    AUTHINFO   NAMESPACE
*         minikube   minikube   minikube   default

 

6. Nginx 포드 생성

admin@DESKTOP-4M8LFU2 MINGW64 ~/.kube
$ **kubectl run nginx --image=nginx**
pod/nginx created
admin@DESKTOP-4M8LFU2 MINGW64 ~/.kube
$ **kubectl get pods
** 포드의 생성 및 상태 확인**
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     **Running**   0          105s

 

7. minikube dashboard: 클러스터 내의 리소스 및 상태를 시각적으로 확인하고 모니터링할 수 있는 웹 기반 대시보드

admin@DESKTOP-4M8LFU2 MINGW64 ~/.kube
$ minikube dashboard
* 대시보드를 활성화하는 중 ...
  - Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
  - Using image docker.io/kubernetesui/dashboard:v2.7.0
* Some dashboard features require the metrics-server addon. To enable all features please run:

        minikube addons enable metrics-server

* Dashboard 의 상태를 확인 중입니다 ...
* 프록시를 시작하는 중 ...
* Proxy 의 상태를 확인 중입니다 ...
* Opening <http://127.0.0.1:50181/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/> in your default browser...

 

8. 포드 삭제 (kubectl delete pod nginx)

admin@DESKTOP-4M8LFU2 MINGW64 ~/.kube
**$ kubectl delete pod nginx**
pod "nginx" deleted
admin@DESKTOP-4M8LFU2 MINGW64 ~/.kube
$ kubectl get pods
No resources found in default namespace.
>> 삭제 확인