[Kube] Kubeflow, WHO ARE YOU?

IT_Engineer/DevOps_Cloud|2022. 11. 2. 16:46
728x90

 

1. 개요 : KUBEFLOW란?

  KUBEFLOW  = "Kube"rnetes + ML "FLOW" 의 합성어
  즉, 쿠버네티스 기반의 Machine Learning FLOW 플랫폼 (혹은 AI 플랫폼)

 

 

🔵 쿠버네티스 기반에서 머신러닝(Machine Learning)

워크플로우(Workflow)를 자동화, ML 워크플로우 각 단계에서

머신러닝 모델을 개발하는데 필요한 도구와 환경 제공

→ ML 모델 쉽게 개발 및 배포, 확장 및 이식이 용이

 

※  머신러닝 워크플로우: 머신러닝 모델을 개발하는 모든 과정
   (데이터 전처리, 탐색적 데이터 분석, 데이터 변환, 하이퍼 파라미터 튜닝, 머신러닝 모델 학습, 머신러닝 모델 배포단계)

 

2. 아키텍처 및 구조

 

 

728x90

댓글()

[Docker] Docker Hub에 올린 이미지 삭제

IT_Engineer/DevOps_Cloud|2022. 2. 22. 18:13
728x90

docke hub에 repository를 생성한 후에, Repository를 삭제하는 법을 알아보자.

어느 날 docker search로 뭘 검색하다보니 예전에 만들어두었던 image 가 나오길래

부랴부랴 지우기 위해 docker hub에 로그인했다.

 

로그인하면. 아래와 같이 내 계정에 만들어진 repository가 나오는데,

1. 해당 Repository명을 클릭

 

2. 상단 탭 중에 Settings를 클릭

 

3. 맨 밑에 Delete repository 클릭

 

마지막으로 repository이름을 그대로 복붙해서, 작성한 후 Delete 버튼을 클릭

 

 

하면 깨끗하게 지워진다! 역시 안 쓰는 건 깨끗하게 지워놔야지,,!

728x90

댓글()

[K8S] Namespace Terminating 상태

IT_Engineer/DevOps_Cloud|2021. 1. 13. 18:43
728x90

쿠버네티스 네임스페이스가 Terminating 상태에서 지워지지 않을 때가 있다.

# kubectl delete ns namespace 라는 명령어에도 삭제가 되지 않을 때.

 

찾아보니 나만 그런 것 같지는 않고, 많은 사람들이 겪는 문제인 것 같아서,

누군가가 조금이라도 더 쉽고 빠르게 해결할 수 있기를 바라면서 내용을 작성하기로 했다.

 

방법 1. (폐쇄망 혹은 별다른 라이브러리/패키지 없이 지우기)

# IP/Port 확인
kubectl proxy &


#namespace 상태?를 json파일로 뽑아내기
kubectl get namespace {네임스페이스명} -o json > {네임스페이스명}.json


#뽑아낸 json파일 수정
sed -i '/"kubernetes"/d' ./{네임스페이스명}.json


#수정한 파일 적용
curl -k -H "Content-Type: application/json" -X PUT --data-binary @{네임스페이스명}.json 127.0.0.1:8001/api/v1/namespaces/{네임스페이스명}/finalize

 

방법 2. jq라는 패키지를 이용하여 진행

#jq 패키지 설치 및 IP/Port 확인
yum install jq
kubectl proxy &

#yaml 파일로 적용할 temp.json 파일 생성
kubectl get namespace {네임스페이스명} -o json |jq '.spec = {"finalizers":[]}' > temp.json

#수정사항 반영
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json http://127.0.0.1:8001/api/v1/namespaces/{네임스페이스명}/finalize

 

각각 편하고 상황에 맞는 방법으로 해결할 수 있길 바란다.

728x90

댓글()

[K8S] Kubernetes pod to local 파일 복사

IT_Engineer/DevOps_Cloud|2021. 1. 7. 19:00
728x90

Kubernetes pod 내 파일을 로컬로 복사하고 싶어서 열심히 찾아보았다.

 (Kubernetes  pod to local 파일 복사 / Kubernetes container to local)

 

그런데 K8S 버그?로 에러메시지가 게속 떠서 안 되고 있는 줄 알았는데,

잘 되고 있더라!!! ㅎㅎ 그래도 나처럼 또 헤매고 있을 누군가에게 도움이 되기 위해!

 

우선, kubectl cp -h 라고 치면 다음과 같이 나온다.

$ kubectl cp -h

  # !!!Important Note!!! 
  # Requires that the 'tar' binary is present in your container 
  # image.  If 'tar' is not present, 'kubectl cp' will fail. 
   
  # Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod in the default namespace 
  kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir 
   
  # Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container 
  kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container> 
   
  # Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace <some-namespace> 
  kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar 
   
  # Copy /tmp/foo from a remote pod to /tmp/bar locally 
  kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar 

 

간단하게 정리하면, 

 

1. 로컬에서 POD 안으로 복사

$ kubectl cp 디렉토리/파일이름 POD이름:디렉토리/파일이름

 

2. POD에서 로컬로 file 복사

$ kubectl cp namespace pod이름:디렉토리/파일이름 /옮길 디렉토리/파일이름

 

- namespace와 pod이름 사이에 /를 넣으면 에러가 나서 띄어쓰기로 썼는데, 혹시 안되면 / 한 번 넣어보기

- 그리고 경로는 절대경로로 주세요!

 

나는 2번 명령어를 사용했는데 자꾸, 

이렇게 "tar: Removing leading '/' from member names" 라는 에러가 뜨길래 안된 줄 알았는데,

하고 ls -al 로 확인해보니 잘 들어와있었다. (쿠버네티스 버그라고 하던데. 예전 버전이라 최신 버전은 안뜰 수도 ㅎㅎ)

 

 

참고로 tar: Removing leading '/' from member names 에러는

kuberneterts가 절대경로를 보안상 안 좋게 생각해서 앞에 '/' 를 removing 한다는 건데,,

에러를 찾으면서 본거라 정확하지 않을 수도 있다. 

 

모쪼록 모두 잘 해결해서 우리 모두 행복하길!!

 

 

 

 

728x90

댓글()

[VM] Virtual Machine (가상머신) 에 대하여

IT_Engineer/DevOps_Cloud|2020. 12. 14. 12:29
728x90

분류

  • 하드웨어 가상머신 (시스템 가상머신)
  • 각 OS를 실행하는 가상 머신 사이의 기초가 되는 물리PC를 다중화하는 기법
  • 가상화를 제공하는 소프트웨어 계층 : '가상머신 모니터' or 'Hyper Visor'라고 함

장점

  • 여러 OS를 사용하는 환경은 완벽히 고립된 형태로 같은 PC 에 실행 가능
  • 가상 머신은 실제 PC가 제공되는 것과 다른 형태의 명령어 집합 구조(ISA) 제공
  • 명령어 집합구조(Instruct Set Architecture, ISA) : 마이크로 프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어 명령어 명령어 집합 구조를 물리적으로 구현하는 방법 : 마이크로아키텍처 혹은 컴퓨터 조직

프로세스 가상 머신

  • VM은 응용 프로그램 가상머신이라고 부르며, OS 안에서 일반 응용 프로그램을 실행하고 단일 프로세스가 이를 지원하는 형태
  • 어떠한 플랫폼에서도 동일하게 실행하고자 하는 목적 + 한정된 자원의 효율적 사용
  • 고급 프로그래밍 언어로 구현되므로 해석기가 필요함

종류

  • JAVA의 인기↑ → JVM 대중화
  • 닷넷 프레임워크는 공통 언어 런타임 언어라는 가상머신을 실행

기술

  • 공통의 실질적인 HW에서의 네이티브로 실행되는 VM은 전가상화와 반가상화 2가지로 분류
  • 완전한 가상화 환경을 구축하기 위한 하이퍼바이저가 추가
  • 네이티브가 아닌 시스템 에뮬레이션의 경우, 다른 CPU를 위해 작성된 응용 SW나 OS가 동작할 수 있도록 하는 형태
  • ex) ARM 프로세서로 개발된 응용 프로그램을 X86 시스템 에뮬레이터로 실행하거나, DOS 환경에서 만들어진 응용프로그램을 현대의 PC에서 사용할 수 있도록 하는 방식

한계점

  • VM 시장 주도사(ESXi, Xen, VirtualBox, KVM)가 공통의 물리 PC를 하이퍼바이저를 통한 한정된 자원 공유 → 여러 개의 응용 애플리케이션을 운영하면서 단점 부각

 한계점 1) VM을 위한 비용 증가, 업무 효율성 저하

  • VM을 위해서 동작하는 호스트 OS는 일반적으로 사용하는 PC환경과 동일한 특성을 가짐
  • 각 애플리케이션의 사용목적에 따라 설치하는 수동적인 작업이 필수적, vm의 개수가 기하급수적으로 증가하게 되면 이를 수용하기 위한 H/W 성능이 높아지므로 비용증가에 따른 부담
  • 이를 관리하는 관리자 또한 증가하는 VM을 효율적으로 관리할 수 없으므로 업무 효율성 저하
  • 관리자의 효율성 증대를 위한 오케스트레이션 기술이 등장 (but, 초창기 오케스트레이션은 복잡성과 낮은 안전성)

 한계점 2) 동일한 VM 배포의 시간이 오래 걸림

  • 여러 app을 운영하여 하나의 시스템의 동작이 중단되는 사태가 일어나도, Fault Tolerant를 보장하기 위해 여러 app을 VM 환경에서 실행하는 것이 일반적 (Fault Tolerant (결함 감내) : 결함이 발생하여도 정상적 혹은 부분적으로 기능을 수행)
  • 같은 VM을 복제하고, 디플로이 시간이 오래걸림 (디플로이 : 프로그램 등을 서버와 같은 기기에 설치하여 작동가능하도록 만드는 일)
  • 처음부터 다시 서버를 세팅하는 경우, 각 서버의 환경설정이 100% 일치하다고 볼 수 없음

 한계점 3) 하나의 app 실행을 위해 너무 많은 자원을 사용

  • VM은 호스트 OS 위에서 특정한 app을 실행하는 구조를 채택
  • 적은 리소스를 사용하는 app이라고 가정하면, 호스트 OS가 사용하는 자원이 더 많을 경우도 있을 수 있음, 이는 app에 특화된 자원 할당을 할 수 없음을 의미

 

728x90

댓글()

[K8S] Kubernetes! 기초 용어 정리

IT_Engineer/DevOps_Cloud|2020. 12. 9. 13:28
728x90

기술 특징

  • 상태관리
  • 상태를 선언하고 선언한 상태를 계속해서 유지
  • ex) 노드가 죽거나 컨테이너 응답 X 경우, 자동으로 새로운 컨테이너를 띄우거나 자동으로 죽임 (선언한 처음 그대로의 상태를 계속해서 유지)
  • 클러스터
  • 가상 네트워크를 통해 통신하기 때문에 하나의 서버에 있는 것처럼 관리할 수 있음
  • 서비스 디스커버리
  • 서로 다 서비스를 쉽게 찾고 통신

스케줄링과 축출(Eviction)

  • 스케쥴링
  • 어떤 서버에 컨테이너를 띄울까 고민하지 않아도 쿠버네티스가 조건에 맞는 노드를 찾아서 컨테이너를 배치
  • kube-scheduler
  • 쿠버네티스의 기본 스케줄러, 컨트롤 플레인의 일부로 실행 원하거나 필요에 따라 자체 스케줄링 컴포넌트를 만들고 대신 사용할 수 있도록 설계

마스터와 노드

  • 클러스터
  • 여러 대의 컴퓨터가 모여서 같은 목적으로 수행되는 컴퓨터들의 집합

마스터

  • 마스터
  • 클러스터 전체를 관리하는 컨트롤러로서 마스터가 존재
  • 마스터에는 Kube-api-server, Kube-controller-manager, Kube-scheduler, Cloud-controller-manager, etcd 등의 컴포넌트가 실행
  • 노드
  • 컨테이너가 배포되는 물리적인 머신

cloud-contorlleromanager

: 오픈 클라우드와 혼합되어있을 때 사용,, (BI_PS팀에서는 잘 사용 X)

실제 컨테이너를 생성해야하니, pod를 생성하고 네트워크,볼륨을 설정 실제 컨테이너를 생성하는 서버 = 노예 서버 (GPU 전용 노드 : GPU를 사용하는 서비스만 띄울 수 있게끔 label 에서 설정, 기본은 무작위)

kubelet

: 클러스터 내 모든 노드로 배포되는 Agent ( 노예 관리자) Node 에 할당된 Pod 생명 주기, 주기적으로 / trouble shooting 진행 시, kubelet 많이 확인

kube-proxy

: 네트워크만 관리 , 컨트롤플레인노드에도 있음 (pod간의 네트워크 관리)

object

: 상태를 관리하기 위한 대상, Basic Object와 컨트롤 오브젝트로 분류

namespace

: 논리적 구분단위 이지만, 다른 namespace 간 Pod 의 통신이 가능 서비스 별로 ns(namespace)를 나눌 수 있음

  • kubectl get ns
  • kubectl get pods -n 이름

pod

: 서비스의 가장 기본적인 단위 (컨테이너을 포함한 상위 개념)

  • pod 안 컨테이너 특징 : 네트워크 환경과 디스크를 공유
  • pod 안에 yaml 형식에 잘 정리해주면, 디스크나 통신을 공유할 수 있음

service

  • 컨테이너가 항상 살아있는 것은 아님, 컨테이너가 장애로 죽을 때, 서버가 다운이 되면 컨테이너가 죽기 때문에 파드가 사라짐 - 다시 재기동되면 그 노드에 뜰 수도 있고, 다른 노드에 띄울 수도 있음 - 다른 노드에 띄우면 아이피가 바뀜. / 아이피바뀜을 예방하기 위해 파드들의 서비스를 고정적으로 관리하는 서비스를 이용 대부분의 파드를 할 때, 서비스도 같이 생성
  • 서비스 타입
  • 클러스터아이피 : 자기들끼리만 소통하는 파드들을 사용할 때 아이피를 고정시켜줌
  • 노드 포트 : 클러스트 내 모든 노드의 지정된 포트를 모두 뚫어주는 방식 모든 노드의 지정된 포트를 할당하는 방식
  • 노드 밸런서 : 특정 IP 를 이용하여 외부에서 접근 가능하도록 함 ( IP 여분이 필요) 대부분의 튜토리얼은 웹서버 실습이 많으므로, 노드 밸런서를 사용하는 경우가 많음 노드 포트의 확장이므로 노드포트도 적용

external name

: 외부의 서비스를 kubernetes 내부에서 호출하고자 할 때 사용 ( 잘 사용 X )

Volume

container 재시작에 상관없이 파일을 영구적으로 저장해야하는 스토리지

Pod 내 Container 들은 해당 디스크를 공유하여 사용 가능

emptyDir

Pod 와 하께 생성하고 사라지는 임시 볼륨

HostPath

해당 노드의 디스크 경로를 Pod에 마운트하여 사용하는 방식

PV / PVC (pod와는 별개의 쿠버네티스만의 독특한 외장하드 같은 개념)

Pod가 죽든말든 PV가 삭제되지 않는 이상 데이터는 영원함!!!!! (yaml로 설정 가능)

  • PV : 볼륨 자체, 저장소
  • PVC : 요청, 이 PV를 얼마만큼 쓰겠다, 종류는 뭘로 하겠다라고 요청을 하는 추상화된 개념
  • 예시 kubectl get pv kubectl get pvc -n hyperdata kg pvc - n hyperdata -o yaml

storageclass

: 동적으로 프로비저닝하는 다루는 객체 실제 노드에 있는 저장된 데이터를 이용할 수 있고, 영구적으로 저장하고 싶거나 여러 파드들과 데이터들을 공유하고 있을 때 pv와 pvc를 사용

  • 예시 kubectl apply -f pvc-db.yaml kg pvc -n hyperdata

admin

: 실제 관리자, PV를 만들어줌, yaml을 통해서 사용자에게 배포

사용자가 어드민이 만들어준 PV를 사용 (1대1 매핑, 하나의 PV는 하나의 PVC만 물림)

rook-ceph

: 하이퍼클라우드에서 사용하는 PV는 모두 rook-ceph 기반으로 만들어짐. (분산 저장소)

 

728x90

댓글()

[K8S] Windows WSL Minikube 및 Wordpress 설치

IT_Engineer/DevOps_Cloud|2020. 11. 30. 11:34
728x90

기초 환경 설정

! Windows Docker 설치 가능 환경

  • Windows 7 이상 (Windows8, Windows10)
  • 컴퓨터 하드웨어가 가상화(Virtualization) 지원
  • 작업관리자(ctrl+ alt+ delete) > 성능 탭 > 가상화 : 사용

  • 윈도우의 Hyper-V 실행 :
    프로그램 제거 또는 변경 > Windows 기능 켜기/끄기 > Hyper-V 체크 후 확인

 


수행 내용

  • Winodws Docker, WSL2, minikube 설치
  • minikube를 통해서 mysql 과 연동된 wordpress 구축

1. Docker for Windows 설치

! Docker for Windows 설치

2.  WSL2 설치

  • https://docs.microsoft.com/ko-kr/windows/wsl/install-win10 > 4단계
    x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 클릭 및 다운로드
  • wsl_update_x64.exe 설치 프로그램 실행
  • WSL 프로그램 실행
  • Microsoft Store > Ubuntu, Windows Terminal 설치
  • Windows Terminal에서 상단의 버튼 누르면 Ubuntu 열림
  • Windows Powershell 마우스 오른쪽 클릭 > 관리자 모드 실행 > wsl 확인
> wsl l -v # wsl Version 2 확인

 
> wsl 진입
# apt-get 패키지 업데이트
> sudo apt-get update && sudo apt-get install
           apt-transport-https
           ca-certificates
           curl
           software-properties-common


#docker 설치
> sudo apt-get install docker
> sudo apt-get install docker.io
> docker version # docker 설치 버전 확인
 

 

3. Kubernetes(minikube) 설치

! minikube 설치

  • Docker for Windows > Settings > Resources > NETWORK, WSL ~ 모두 체크
  • Docker for Windows > Settings > Kubernetes 모두 체크

# minikube 설치
$ curl LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
$ sudo dpkg i minikube_latest_amd64.deb


# minikube 실행
$ minikube start driver=docker
$ minikube kubectl

 

 

4. mysql을 연동한 wordpress 구축

! kustomization.yaml 생성하기

  • 시크릿 생성자 추가
# kustomization.yaml 생성
# password (password 부분) 수정 가능
$ cat <<EOF >./kustomization.yaml
secretGenerator:
- name: mysql-pass 
  literals: 
  - password=password(#본인 비밀번호)
EOF

 

  • MySQL 디플로이먼트 단일 인스턴스 기술
  • MySQL 컨테이너는 퍼시스턴트볼륨을 /var/lib/mysql에 마운트
  • MYSQL_ROOT_PASSWORD 환경변수는 시크릿에서 가져와 DB 암호 설정
  • MySQL deployment 구성 파일 다운로드
# MySQL 디플로이먼트 구성 파일 다운로드
$ curl LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml


# Wordpress 디플로이먼트 구성 파일 다운로드
$curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml



 

  • 위 두 yaml 파일을 kustomization.yaml에 추가
$ cat <<EOF >>./kustomization.yaml
resources: 
     - mysql-deployment.yaml
     - wordpress-deployment.yaml
EOF

! yaml 내용

  • mysql-deployment.yaml 파일 내용
더보기

# mysql-deployment.yaml

apiVersion: v1

kind: Service

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

ports:

- port: 3306

selector:

app: wordpress

tier: mysql

clusterIP: None

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mysql-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

---

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2

kind: Deployment

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: mysql

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: mysql

spec:

containers:

- image: mysql:5.6

name: mysql

env:

- name: MYSQL_ROOT_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: mysql-persistent-storage

mountPath: /var/lib/mysql

volumes:

- name: mysql-persistent-storage

persistentVolumeClaim:

claimName: mysql-pv-claim

  • wordpress-deployment.yaml 내용
더보기

# wordpress-deployment.yaml

apiVersion: v1

kind: Service

metadata:

name: wordpress

labels:

app: wordpress

spec:

ports:

- port: 80

selector:

app: wordpress

tier: frontend

type: LoadBalancer

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: wp-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

---

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2

kind: Deployment

metadata:

name: wordpress

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: frontend

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: frontend

spec:

containers:

- image: wordpress:4.8-apache

name: wordpress

env:

- name: WORDPRESS_DB_HOST

value: wordpress-mysql

- name: WORDPRESS_DB_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 80

name: wordpress

volumeMounts:

- name: wordpress-persistent-storage

mountPath: /var/www/html

volumes:

- name: wordpress-persistent-storage

persistentVolumeClaim:

claimName: wp-pv-claim

 

 

5. yaml 파일 적용 및 확인

  • kustomization.yamlWordpress 사이트와 MySQL 데이터베이스를 배포하는 모든 리소스를 포함
  • 다음과 같이 디렉토리 적용 가능
$ kubectl apply k ./

 

  • 적용 확인
# 시크릿 존재 확인
$ kubectl get secrets


# 퍼시스턴트 볼륨이 동적으로 프로비저닝이 되었는지 확인
$ kubectl get pvc


# 파드 확인
$ kubectl get pods


# 워드프레스 서비스가 실행중인지 확인
$ kubectl get services wordpress


# 워드프레스 서비스 IP주소 확인
$ minikube service wordpress —url

 

6. 웹 브라우저를 통한 확인

  • kubectl을 통한 pvc, service, url 확인 커맨드

  • URL 주소를 복사하여 웹 브라우저에서 사이트 확인

  • Wordpress 설치 환경 설정

 

7. 성공 화면

 

 

 

728x90

댓글()

[Docker] Docker, Docker-ce 설치

IT_Engineer/DevOps_Cloud|2020. 11. 2. 19:48
728x90

0. 설치 환경

  • CentOS
    • 권장 사양 : CentOS 7 64bit 이상
    • 낙서쟁이 사양 : CentOS Linux release 7.8.2003 (Core)
  • Kubernetes 구축을 위한 사양 (꼭 잘 확인하세요!! 확인 안하고 했다가, VM 지우고 다시 설치한 1인)

1. Docker 설치

  • 목적 : 컨테이너 이미지를 생성, 관리, 공유
  • 기존에 설치된 경우, 구버전 삭제 
# yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ Docker-logrotate \ docker engine

 

    • Docker-CE 설치를 위한 필수 패키지 설치 및 저장소 설정
## 필수 패키지( yum-utils 설치)
# sudo yum install -y yum-utils device-Mapper-persistent-data lvm2

## docker-ce stable 저장소 설정
#sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • stable이 아닌 edge나 test를 사용하려는 경우에도, stable 저장소는 반드시 설정 필요
  • edge 활성화 : sudo yum-config-manager --enable docker-ce-edge
  • test 활성화 : sudo yum-config-manager --enable docker-ce-test
  • edge나 test 저장소를 비활성화하련면, --enable을 --disable로 변경

 

  • Doiucker daemon에 insecure-registries 등록
# vi /etc/docker/daemon.json
{
    "insecure-registries": ["{IP}:5000"]
}

 

  • Docker 설치
# yum install -y docker-ce docker-ce-cli containerd.io
  • docker-ce : daemon 프로세스가 있는 서버
  • docker-ce-cli : docker daemon과 통신하고 지시하는데 사용할 수 있는 인터페이스를 지정하는 API
  • containerd.io : pod에서 컨테이너를 실행하기 위한 컨테이너 런타임

 

 

  • Docker 실행
# systemctl enable docker
# systemctl restart docker 
# systemctl status docker
  • 재시작 시 Docker가 자동실행되도록 설정
  • 아래와 같은 상태가 나오면 성공!

 

728x90

댓글()