기술 블로그(Alex)

  • Github Page
    • jekyll
  • Docker
    • guide
    • container
  • 이모저모

Docker 기본개념

Dec 20, 2018

로컬, 개발, 운영에 대해서 모두 동일한 환경을 구성할 수 있다.
순간 트래픽이 증가하거나 하는 경우 새로운 서버에 Docker Engine만 설치하면 빠르게 환경 구축이 가능하다.

Docker 기본개념

Dockerfile을 이용하여 자신만의 image를 생성하여 Docker Hub 또는 사내 Registry를 구성하여 push한다.
각 노드는 Registry로부터 이미지를 다운로드 받아서 격리된 컨테이너를 실행할 수 있다.
기존의 vm 같은 경우는 hypervisor가 hardware를 가상화하고 그위에 새로운 OS가 올라가는 구조이다.
하지만 Docker의 경우는 OS에 설치된 Docker Engine 위에 어플리케이션(OS 등등) 실행에 필요한 바이너리만 올라가는 구조이기 때문에
더 적은 자원을 사용할 뿐만 아니라 실행속도 또한 빠르다.

KUBENETES, DOCKER SWARM, APACHE MESOS 등을 이용하여 컨테이너의 배포 관리를 할 수 있다.(Container Orchestration)
위의 3가지 솔루션들은 모두 여러 머신들의 자원을 Pool로써 관리하고 새로운 컨테이너가 배포되면 각 노드의 리소스 사용량에 따라
절적하게 컨테이너를 해당 머신에 배포하여 준다. (서버 자원을 효율적으로 사용할 수 있다.) Google trends

  • 구글 트렌트 분석
    • kubenetes
    • docker swarm
    • mesosphere

KUBENETES DOCKER SWARM APACHE MESOS
  • Kubernetes의 배포 기본단위는 Pod이라 부른다.
  • 각 Pod은 하나 또는 더많은 컨테이너로 구성된다.
  • Pod 안의 모든 컨테이너들은 같은 Host 상에서 스케쥴링 되고
  • localhost loopback 인터페이스를 통해 서로 통신할 수 있다.
  • 스케쥴링 이란?
  • Pod 사용하는 리소스(CPU, Memory)에 따라 적절한 host를 선택하여 배정한다.
  • Docker Compose 파일을 사용하여 정의한다.
  • Docker Swarm 클러스터에 리소스 사용량에 따라 배정한다.
  • Mesos master가 각 agent의 지원을 관리한다.
  • Zookeeper를 이용하여 master 서버 문제시 standby를 leader로 승격
  • © Alexonepath. All rights reserved. Powered by GitHub Pages.