Cloud/Docker

Docker) Docker를 알아보기

Adım Kim 2022. 9. 27. 19:18

Docker란?

  • Docker는 Container기술의 한 종류, Container 생성과 관리 역할을 한다.
  • VM(Virtual Machine)처럼 완전히 독립된 실행환경(Container)을 생성한다.
  • VM은 Hypervisor기반 가상화를 한다면, Docker는 Container engine을 통해 프로세스 단위 가상화를 한다.
  • Docker는  host의 O/S를 사용하기 때문에, 운영체제를 설치하는것과 유사한 효과를 내면서 설치 용량이 작고 실행 속도도 빠르다.
  • Docker Container는 소프트웨어 실행에 필요한 모든것을 한 파일 시스템안에 감싼 하나의 상자같은 모양이다.
  • Docker Container안에는 런타임코드, 시스템도구, 시스템라이브러리등 서버에 설치되는 모든것이 들어가기 때문에 host의 O/S에 관계없이 동일하게 실행될 것을 보증한다.


Docker 구성요소

  1. Docker Engine(Docker Run-Time)과 Docker Container로 구성되어있다.
  2. Docker Engine
    • Docker Engine은 container 생성 및 관리하는 역할을 수행한다.
    • 리눅스 컨테이너 (LXC) 기술을 기반으로 한다.
      1. chroot (change root) : 특정 디렉토리를 최상위 디렉토리 root로 인식하게 하는 리눅스 명령
      2. namespace : 프로세스 자원을 관리하는 기능으로 mnt, pid, net, ipc, user등의 자원을 그룹화하여 할당한다.
      3. cgroup (control group) : CPU, memory, disk, I/O, network등의 자원 사용량 제어를 통해 특정 애플리케이션의 과도한 자원 사용을 제한한다.
      4. UnionFS (Union File System) : 여러개의 파일시스템을 하나의 파일시스템으로 마운트 시키는 가상파일시스템
  3. Docker Container
    • 격리(Isolate)된 응용프로그램 실행환경이다.
    • (Container 장점1) 하이퍼바이저와 게스트 O/S가 없기때문에 크기가 작다.
    • (Container 장점2) 크기가 작아서 이미지 복제, 이관, 배포가 쉽다.
    • (Container 장점3) 게스트O/S를 부팅하지 않기 때문에, 애플리케이션 시작 시간이 빠르다.
    • (Container 장점4) 가상머신보다 가볍기 때문에, 애플리케이션을 더 많이 실행할 수 있다.