도커

docker - 도커를 쓰는 이유??

ballde 2021. 11. 20. 22:53

일단 도커란??

컨테이너 기반 가상화 도구입니다.

가상화란??


물리적인 하나의 서버가 있고 그 서버의 자원을 나눠서 가지면서 분산

각각 다른환경, 다른 서비스를 실행할 수 있게 된 것입니다.

그리고 가상화를 통해 많은 자원이 필요한 곳에는 많을 자원을 주고 그렇지 않은 곳에는 적은 자원을 줄 수 있게되어서 하드웨어를 좀 더 효율적으로 사용할 수 있게 되었고 유지관리 비용을 줄 일 수 있습니다.

하이퍼 바이저??


위와 같은 서버 가상화를 구현해주는 것이 하이퍼바이저

여러 개의 운영체제를 하나의 호스트에서 생성 → 가상머신

가상머신에 생성된 os를 게스트 os라고 합니다.

하지만 가상머신은 반드시 하이퍼바이저가 반드시 필요 → 호스트 os에 비해 성능이 떨어짐

게스트 os를 사용하기 위한 커널, 라이브러리 등을 다 포함함 → 이미지가 매우 커짐

⇒ 성능이 느리고 용량이 부족함

⇒ 컨테이너 기반 가상화가 나옴

컨테이너 안에는 실행파일과 라이브러리 등만 존재 ⇒ 이미지 경량화

host os의 커널 공유

도커 ⇒ 컨테이너 기술이 들어간 프로젝트

 

컨테이너는 프로세스의 생명주기를 관리하며 실행하는 하나의 프로세스

여기서 host os 입장에서는 컨테이너가 그냥 프로세스라고 인식이됨

⇒ 호스트와 격리를 통해 독립된 개발 환경을 보장

⇒ 프로세스를 컨테이너 단위로 사용, 프로세스 관리, 확장에 용이

장점

  1. 컨테이너는 애플리케이션 환경에 구애받지 않고 실행하는 기술
ubuntu환경
centos환경

⇒ os 마다 명령어가 달라짐

하지만 컨테이너 도구인 도커가 설치되어 있다면 어느 환경이든 같은 명령어를 사용하여 실행가능

  1. 도커의 이미지 파일은 history(서버 운영 기록)

도커 엔진

사용자는 도커 엔진을 통해 컨테이너 관리

  • 컨테이너 관리
  • 이미지 관리
  • 볼륨 관리
  • 네트워크 관리

간단한 플로우

도커 명령어 → 도커 엔진에게 전달 → 도커 클라이언트가 도커 데몬(컨테이너 관리 주체) api 호출

여러개의 서버의 도커 엔진

host os 에 컨테이너를 100개 띄워서 cpu, 메모리, 용량 등이 부족 현상이 발생할 경우

  1. scale up
    • 서버 자체를 엄청 좋게 업그레이드
    • 하지만 그만큼의 자원이 필요가 없을 경우 자원 낭비 발생
  2. scale out
    • 서버를 여러개로 늘려서 그것들을 클러스터로 만듦 ⇒ 자원을 병렬로 확장

 

클러스터란?

다른 서버들을 하나로 묶어서 하나의 시스템처럼 동작하게 함

⇒ 요청에 따라 트래픽을 분산

하지만 도입이 어려움

⇒ 도커 스웜이라는 오픈소스를 활용

도커 스웜

 

도커 컴포즈

여러개의 컨테이너를 하나의 서비스로 정의

 

docker-compose에 있는 서비스들을 한번에 띄워준다.

⇒ 만약 이게 없었다면?? → 하나씩 docker build .. docker run ...

'도커' 카테고리의 다른 글

도커 컨테이너 작동원리와 순서  (0) 2021.12.04