코알못

[Docker] 설치 본문

ETC

[Docker] 설치

코린이s 2022. 3. 25. 16:36
728x90

docker는 리눅스 컨테이서 관리 기술로 mac/window 에서 Native(원주민)로 사용할 수 없다.

그러나 도커의 경우 쓰임새가 많아지다 보니 mac, window 에서도 사용 가능하도록 'docker for desktop' 이 만들어졌으며 linux 에서 설치해야하는 docker, docker-compose 모두 포함되어 있다. (단, 도커의 기능을 완전하게 사용하려면 리눅스에서 사용하는것이 바람직 하다.)

데스크탑 GUI 도 포함되어 있어 CLI에 익숙하지 않은 유저도 편리하게 사용 가능하다. 

저자의 경우 mac 이기에 아래와 같이 homebrew를 이용하여 설치를 진행한다.

$ brew install --cask docker

cask 를 넣는 이유는 GUI(화면이 있는 설치파일) 어플리케이션 설치이기에 넣어줘야 한다.

설치가 완료 되었음에도 불구하고 docker 라고 입력시 찾을 수 없다고 뜬다.

$ docker
zsh: command not found: docker

아래와 같이 docker 를 검색하여 실행을 최초로 해줘야 CLI 로 도커 사용이 가능하다.

docker를 검색하여 실행한다.

권한이 필요하다는 경고 창이 나오면 mac password 를 입력하면 상단에 고래 아이콘이 뜬다.

클릭 해보면 running 이라고 표기 되어 있어 실행중임을 확인 할 수 있으며,

dashboard 를 클릭한다.

아래와 같이 GUI 환경에서 관리 할 수 있는 dashboard 화면이 뜬다.

이제 CLI 환경에서 docker를 입력해보면 정상적으로 뜬다.

$ docker -v
Docker version 20.10.13, build a224086

kubectl 은 kubernetes 의 API 서버와 통신하여 사용자 명령을 전달할 수 있는 CLI 도구 이다.

$ brew install kubectl

kustomize는 kubernetes 의 매니페스트 파일을 좀 더 효율적으로 관리 할 수 있도록 도와주는 도구이다.

$ brew install kustomize

정상적으로 설치 됨을 확인 해보자

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/amd64"}
$  kustomize  version
{Version:kustomize/v4.5.2 GitCommit:9091919699baf1c5a5bf71b32ca73a993e98088b BuildDate:2022-02-09T23:19:28Z GoOs:darwin GoArch:amd64}

만약 kubectl 설치시 이전에 설치한 버전과 충돌이 일어날시 아래와 같이 입력하여 해결 가능하다.

$ brew link --overwrite kubernetes-cli

minikube란 작은 kubernetes 로 복잡한 쿠버네티스 클러스터 구성 작업을 심플하게 한 쿠버네티스라고 할 수 있으며

학습시에는 서버 여러대를 마련할 수 없으므로 가상 환경을 사용하여 쿠버네티스 클러스터를 구현 할 수 있다.

실제 운영 환경에서 쓰기 어려우나 학습 용도로 적합하다.

자 설치 해보자!

$ brew install minikube
$ minikube version
minikube version: v1.25.2

설정 파일

$ cat ~/.kube/config
apiVersion: v1
clusters:
- cluster:
    certificate-authority: ../.minikube/ca.crt
    extensions:
    - extension:
        last-update: Fri, 25 Mar 2022 16:00:50 KST
        provider: minikube.sigs.k8s.io
        version: v1.25.2
      name: cluster_info
    server: https://127.0.0.1:50631
  name: minikube
contexts:
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Fri, 25 Mar 2022 16:00:50 KST
        provider: minikube.sigs.k8s.io
        version: v1.25.2
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: ../.minikube/profiles/minikube/client.crt
    client-key: ../.minikube/profiles/minikube/client.key

클러스터 상태 확인

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

$ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:50631
CoreDNS is running at https://127.0.0.1:50631/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

클러스터명, 상태, 권한, 생성후 시간, 버전

$ kubectl get nodes
NAME       STATUS   ROLES                  AGE     VERSION
minikube   Ready    control-plane,master   7m57s   v1.23.3

minikube 기본 사용법

// 클러스터 상태 확인
$ minikube status
// 쿠버네티스 클러스터 중지
$ minikube stop
// 쿠버네티스 클러스터 삭제
$ minikube delete
// 쿠버네티스 클러시터 일시중지
$ minikube pause
// 쿠버네티스 클러스터 재개
$ minikube unpause

addons 이란 minikube 에만 있는 기능으로 필요한 이미지를 손쉽게 다운하여 사용 할 수 있게 하는 기능이다.

아래와 같이 addons 리스트를 확인 할 수 있으며

$ minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | third-party (ambassador)       |
| auto-pause                  | minikube | disabled     | google                         |
| csi-hostpath-driver         | minikube | disabled     | kubernetes                     |
| dashboard                   | minikube | disabled     | kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | kubernetes                     |
| efk                         | minikube | disabled     | third-party (elastic)          |

설치를 원할시 아래와 같이 입력하면 된다.

$ minikube addons enable [명칭]

도커 컨테이너에 접속하기 위한 명령어

$ minikube ssh
docker@minikube:~$
docker@minikube:~$ exit
$

쿠버네티스 버전과 동일한 kuberctl 의 버전 이용하여 버전 호환성 문제를 없게 하기 위해 제공하는 기능으로 아래와 같이 설치 가능하다.

$ minikube kubectl
$ minikube kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3", GitCommit:"816c97ab8cff8a1c72eccca1026f7820e93e0d25", GitTreeState:"clean", BuildDate:"2022-01-25T21:25:17Z", GoVersion:"go1.17.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3", GitCommit:"816c97ab8cff8a1c72eccca1026f7820e93e0d25", GitTreeState:"clean", BuildDate:"2022-01-25T21:19:12Z", GoVersion:"go1.17.6", Compiler:"gc", Platform:"linux/amd64"}
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3", GitCommit:"816c97ab8cff8a1c72eccca1026f7820e93e0d25", GitTreeState:"clean", BuildDate:"2022-01-25T21:19:12Z", GoVersion:"go1.17.6", Compiler:"gc", Platform:"linux/amd64"}

쿠버네티스 클러스터 버전 '1.23.3' 에 맞게 minikube kubectl 은 1.23.3 이 설치 되었다.

$ kubectl get node
NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   27m   v1.23.3
728x90
Comments