일단 도커란??
컨테이너 기반 가상화 도구입니다.
가상화란??
물리적인 하나의 서버가 있고 그 서버의 자원을 나눠서 가지면서 분산
각각 다른환경, 다른 서비스를 실행할 수 있게 된 것입니다.
그리고 가상화를 통해 많은 자원이 필요한 곳에는 많을 자원을 주고 그렇지 않은 곳에는 적은 자원을 줄 수 있게되어서 하드웨어를 좀 더 효율적으로 사용할 수 있게 되었고 유지관리 비용을 줄 일 수 있습니다.
하이퍼 바이저??
위와 같은 서버 가상화를 구현해주는 것이 하이퍼바이저
여러 개의 운영체제를 하나의 호스트에서 생성 → 가상머신
가상머신에 생성된 os를 게스트 os라고 합니다.

하지만 가상머신은 반드시 하이퍼바이저가 반드시 필요 → 호스트 os에 비해 성능이 떨어짐
게스트 os를 사용하기 위한 커널, 라이브러리 등을 다 포함함 → 이미지가 매우 커짐
⇒ 성능이 느리고 용량이 부족함
⇒ 컨테이너 기반 가상화가 나옴

컨테이너 안에는 실행파일과 라이브러리 등만 존재 ⇒ 이미지 경량화
host os의 커널 공유
도커 ⇒ 컨테이너 기술이 들어간 프로젝트

컨테이너는 프로세스의 생명주기를 관리하며 실행하는 하나의 프로세스
여기서 host os 입장에서는 컨테이너가 그냥 프로세스라고 인식이됨
⇒ 호스트와 격리를 통해 독립된 개발 환경을 보장
⇒ 프로세스를 컨테이너 단위로 사용, 프로세스 관리, 확장에 용이
장점
- 컨테이너는 애플리케이션 환경에 구애받지 않고 실행하는 기술
ubuntu환경
centos환경
⇒ os 마다 명령어가 달라짐
하지만 컨테이너 도구인 도커가 설치되어 있다면 어느 환경이든 같은 명령어를 사용하여 실행가능
- 도커의 이미지 파일은 history(서버 운영 기록)


도커 엔진
사용자는 도커 엔진을 통해 컨테이너 관리
- 컨테이너 관리
- 이미지 관리
- 볼륨 관리
- 네트워크 관리
간단한 플로우
도커 명령어 → 도커 엔진에게 전달 → 도커 클라이언트가 도커 데몬(컨테이너 관리 주체) api 호출
여러개의 서버의 도커 엔진
host os 에 컨테이너를 100개 띄워서 cpu, 메모리, 용량 등이 부족 현상이 발생할 경우
- scale up
- 서버 자체를 엄청 좋게 업그레이드
- 하지만 그만큼의 자원이 필요가 없을 경우 자원 낭비 발생
- scale out
- 서버를 여러개로 늘려서 그것들을 클러스터로 만듦 ⇒ 자원을 병렬로 확장

클러스터란?
다른 서버들을 하나로 묶어서 하나의 시스템처럼 동작하게 함
⇒ 요청에 따라 트래픽을 분산
하지만 도입이 어려움
⇒ 도커 스웜이라는 오픈소스를 활용
도커 스웜

도커 컴포즈
여러개의 컨테이너를 하나의 서비스로 정의

docker-compose에 있는 서비스들을 한번에 띄워준다.
⇒ 만약 이게 없었다면?? → 하나씩 docker build .. docker run ...
'도커' 카테고리의 다른 글
| 도커 컨테이너 작동원리와 순서 (0) | 2021.12.04 |
|---|