TIL[81].Docker 개념 정리

jake.log·2020년 10월 18일
0

1. Docker란?

Docker는 가상화 기술로, 가상화 컨테이너에 애플리케이션 배포를 자동화 시켜주는 오픈소스 엔진이다. 즉, 가상환경인 컨테이너 위에 애플리케이션 배포엔진을 더하여 사용자가 코드를 언제 어디서나 빠르고 가볍게 실행 할 수 있도록 도와준다. Docker를 통해 EC2에 배포가 가능하다.

2.Hypervisor 가상화와 Container 가상화

Hypervisor는 물리적인 서버에서 하나 이상의 운영체제가 돌아간다. OS 위에 다른 OS가 가상으로 돌아간다고 보면 된다. 이러한 가상화의 장점은 물리적 서버의 리소스를 더 효율적으로 사용할 수 있다는 것이다.

그러나 너무 무겁고 부팅이 길어져서 리소스를 많이 차지한다는 단점이 있다.

Container 가상화 기술은 Hypervisor와 다르게 OS 위에 유저 공간을 따로 만들어 실행한다. 완전히 독립적인 OS가 아닌 , 독립적인 유저 공간을 가상화 한다.

하나의 호스트 서버에서 독립적인 유저 공간 인스턴스를 가상적으로 실행하여, 훨씬 가볍고 빠르다.
Docker 이미지를 통해 어디서든 쉽고 빠르게 test 환경,sandbox 환경 및 production 배포가 가능하다. 따라서 최근에 많이 사용되는 MSA(Micro Service Architechture)와 CI/CD에 아주 잘 어울리는 가상화 기술로 인기가 많다.

그러나 운영체제가 전혀 다를 경우 실행을 시킬 수 없다는 단점이 있다.

3. Docker의 구조

Docker는 크게 4가지 부분으로 되어 있다.

  • Docker client 와 server (server는 docker engine으로 불리기도 한다)

    • 클라이언트가 서버에 명령을 전달하여 서버가 실행 된다.
    • docker binrary 커맨드: docker 클라이언트
    • dockerd: docker daemon 혹은 docker engine
    • Docker engine과 interact하기 위한 Restful API도 제공된다.
  • Docker 이미지

    • 이미지를 통해 build 할 수 있고, container에서 애플리케이션을 실행시킨다.
  • Docker registries

    • docker registires는 docker 이미지를 저장하는 repository이다.
    • Source code를 github에 저장하여 관리하듯 docker 이미지는 dockerhub 같은 docker registries에 저장된다.
    • Github가 마찬가지로 public registry 가 있고 private registry가 있다.
  • Docker containers

    • docker container에서 docker 이미지가 실행된다.
    • docker 이미지를 실행시키는 가상화 공간
    • docker container는 하나 혹은 그 이상의 프로세스를 실행 시킬수 있다.
  • Docker Compose And Swarm

    • 여러 docker container들로 이루어진 stack이나 cluster를 관리 하는 서비스
profile
꾸준히!

0개의 댓글