에라모르겠다(‘◇’)?

도커 & 쿠버네티스 소개 & 기본 개념 본문

인프라/도커

도커 & 쿠버네티스 소개 & 기본 개념

도토리즈 2023. 4. 25. 23:49

■ 도커 

 

애플리케이션을 개발/배포/실행하기 위한 플랫폼 컨테이너를 사용하여 애플리케이션 및 지원 구성 요소를 개발 리눅스 자체 기능을 사용하여 

프로세스 단위의 격리 환경을 제공 배포 용량과 시간을 단축하고, 성능 손실을 최소화 시킴

개념에 대해서 개념적으로는 아 이런거구나 하고 알겠는데 막상 설명하라하면 1도 설명 못할정도로 이해가 가지 않았다..그래서 도커 컨테이너랑 쿠버네티스 컨테이너랑 그래서 같다는건지..? 그래서 gpt한테 물어본 결과 

 

■ 도커(gpt 비유법 설명)

더보기

도커 컨테이너를 비유적으로 설명하자면, 컨테이너는 바로 작은 식물을 키우는 작은 화분과 같다고 할 수 있습니다.

화분 안에 있는 작은 식물은 다양한 종류가 있지만, 각각의 식물은 서로 독립적으로 자라고 필요한 양분과 물을 받아들이며, 독특한 모양과 색상을 가지고 있습니다. 이와 비슷하게 도커 컨테이너도 서로 독립적으로 실행되며, 필요한 소프트웨어와 라이브러리, 파일 등을 포함하여 실행 환경을 제공합니다.

또한, 다른 컨테이너들과 격리되어 있기 때문에 컨테이너 안에서 실행되는 소프트웨어는 다른 컨테이너에서 실행되는 소프트웨어에 영향을 주지 않습니다. 이는 마치 작은 식물들이 각각의 화분에서 자라는 것과 같이, 도커 컨테이너들은 서로 독립적으로 실행되며 다른 컨테이너와 상호작용하지 않습니다.

따라서 도커 컨테이너는 소프트웨어 개발과 배포를 간편하게 만들어주는 기술로, 여러 개의 독립적인 실행 환경을 구성할 수 있고, 이를 쉽게 배포하고 관리할 수 있습니다.

■ 쿠버네티스(gpt 비유법 설명)

더보기

쿠버네티스 컨테이너를 비유적으로 설명하자면, 컨테이너 배송을 관리하는 대형 물류 센터와 같다고 할 수 있습니다.

대형 물류 센터에서는 다양한 상품들이 도착하며, 이를 적절한 위치에 배치하고, 주문이 들어오면 상품을 효율적으로 포장하여 배송합니다. 이와 유사하게 쿠버네티스 컨테이너는 여러 개의 컨테이너들을 관리하는 역할을 합니다.

쿠버네티스는 컨테이너들을 클러스터로 구성하여 관리합니다. 클러스터는 여러 대의 서버에서 구성되며, 각 서버는 여러 개의 컨테이너를 실행할 수 있습니다. 이렇게 클러스터 안에 있는 모든 컨테이너들은 쿠버네티스가 관리하며, 각각의 컨테이너는 필요한 자원과 환경을 할당 받아 실행됩니다.

또한, 쿠버네티스는 컨테이너들을 관리하면서 언제든지 새로운 컨테이너를 추가하거나 기존 컨테이너를 제거할 수 있습니다. 이는 마치 물류 센터에서 새로운 상품을 추가하거나 기존 상품을 배송하는 것과 같은 역할을 합니다.

따라서 쿠버네티스 컨테이너는 여러 개의 컨테이너를 효율적으로 관리하며, 컨테이너들을 빠르고 안정적으로 배포하고 관리할 수 있는 기술로, 대규모 서비스 개발 및 운영에서 필수적인 기술입니다.

■ 도커와 쿠버네티스

더보기

도커 컨테이너와 쿠버네티스 컨테이너는 서로 다른 것입니다.

도커 컨테이너는 컨테이너 기술 자체를 말하며, 소프트웨어를 실행할 때 필요한 모든 것을 패키징하여 독립적인 실행 환경을 제공합니다. 도커 컨테이너는 개발과 배포를 간편하게 만들어주는 기술로, 애플리케이션을 빠르고 일관되게 실행할 수 있습니다.

반면에 쿠버네티스 컨테이너는 도커 컨테이너를 관리하고 배포하는 플랫폼으로, 도커 컨테이너를 포함하여 다양한 컨테이너화된 애플리케이션을 관리하고 운영할 수 있습니다. 쿠버네티스는 여러 대의 서버에서 실행되는 컨테이너들을 효율적으로 관리하며, 컨테이너들 간의 네트워크 연결, 자원 할당, 상태 관리 등을 제공합니다.

즉, 도커 컨테이너는 소프트웨어 실행 환경을 제공하는 컨테이너 기술이며, 쿠버네티스 컨테이너는 도커 컨테이너를 포함하여 여러 컨테이너를 효율적으로 관리하고 운영하기 위한 플랫폼입니다.

음 그렇다고 한다..! 이제 부터 이성미 강사님의 [따배쿠] 시리즈를 들으면서 

들은 내용 정리하며 도커와 쿠버네티스에 대해서 알아봐야지

 

 

■ Dockerfile생성

# cat> Dockerfile

FROM node:12

COPY app.js/app.js

ENTRYPOINT ["node","app.js"]

 

*컨테이너를 만들어서 컨테이너 저장소에 저장하는 방법

① 리눅스 운영체제에 도커 설치

② 도커 데몬 start ==> 도커 플랫폼 만들어짐

③ hub ==> 컨테이너를 저장해두는 창고

 

■ 컨테이너 build 

 

$docker build -t smlinux/nodeinfo:v1 [컨테이너 이름]

$docker images

 

■ 컨테이너 push 

$docker push smlinux/nodeinfo:v1

 

■ 저장된 컨테이너 사용

① 도커 컨테이너 다운로드 
$docker pull smlinux/nodeinfo:v1

② create
$docker create --name app -p 80:8080  smlinux/nodeinfo:v1

③ start
$docker start app

즉 , 컨테이너를 동작하기 위해서는 도커 플랫폼이 필요함!

 

 

■ 가상머신 vs 컨테이너

 

(1) 가상머신 

하이퍼바이저 : vmware , virtualBox 설치 -> 가상의 머신 생성 (하드웨어, 메모리, cpu, os설치, app동작)

- > 가장 적당한 하드웨어 용량을 할당하여 가상머신 동작, 하드웨어 효율적으로 사용

 

(2) 컨테이너

Host 운영체제 (ex 리눅스) : 도커 플랫폼 start -> 컨테이너 app 동작 

 

차이점 :  컨테이너(소스코드 + 베이스 환경) = 컨테이너가 훨씬 가벼움 , 빠르게 확장 빠르게 배포

컨테이너의 주 목적 : 배포 (deploy) , 독립된 공간으로 실행, 서로에게 영향 x

 

■ 멀티호스트 도커 플랫폼

: 도커시스템 여러대 만들어서 분산운영 

2대 이상의 도커 시스템이 있는 경우 한 대가 다운되도 다른 한 대에서 정상적인 운영 가능

 

■ 컨테이너 오케스트레이션 

: 애플리케이션을 잘 배치해서 제대로 운영이 될 수 있도록 해줌 , 가장 최적의 환경 배치 , 확장 축소 유연하게 가능

 

 

■ 컨테이너 계층구조 

Development Workflow
Opinionated Containers
OpehShift, Cloud Foundary,
Docker Cloud
Orchestration / Scheduling
Service Model
Kubernetes, Docker Swarm
Container Engine Docker
Operating System Ubuntu, CoreOS
Virtual Infrastructure vSphere, EC2, Azure
Physical Infrastructure Network, Storage

★★ 쿠버네티스가 컨테이너 오케스트레이션 역할을 해줌 

 

 

■ 쿠버네티스 (K8S) 

컨테이너화 된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템

 

* 특징

- 워크로드 분리

- 어디서나 실행 가능 - 온프레미스 ,퍼블릭 클라우드

- 선언적 API 

 

ex) 쿠버네티스 준비상태 ( 노드 2, 컨트롤 플레인1 )

컨트롤플레인에게 요청 -> '웹서버 3개 실행시켜줘' 라고 요청

요청 하기만 하면 컨트롤플레인이 알아서 판단해서 웹서버 3개를 적절한 노드에 배치 

쿠버네티스가 현재 상태 모니터링하여 노드가 다운되더라도 다른 노드에 적절하게 실행시켜줌

즉, 하드웨어에서 애플리케이션이 잘 동작하도록 도와줌 

 

 

 

출처 : [따배쿠] kubernetes(쿠버네티스) 소개 

 

 

 

 

 

 

 

 

Comments