Docker

Docker01. 도커란?

데브플레이버 2023. 4. 25. 10:38
반응형

리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트

  • 도커 프로젝트
    • Docker Compose
    • Private Registry
    • Docker Machine
    • Kitematic
    • Docker Engine
    • 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트
    • 도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 핵심이 되는 것은 도커 엔진이다.

가상머신과 도커 컨테이너

가상머신

  • 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에 생성해 사용하는 방식
  • 여러 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 머신에 우분투, CentOS등의 운영체제가 설치
  • 하이퍼바이저에 의해 생성되고 관리되는 운영체제는 게스트 운영체제라고 하고, 다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당 받아 사용
  • 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생함
  • 또한 가상 머신을 배포하기 위한 이미지로 만들었을 때 이미지의 크기가 큰 단점이 있음

도커 컨테이너

  • 도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없음
  • 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고, 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상머신에 비해 매우 작음

도커의 장점

  • 애플리케이션의 개발과 배포가 편하다.
    • 컨테이너 내부에서 여러 작업을 마친 뒤 이를 운영 환경에 배포하려고 한다면, 해당 컨테이너를 도커 이미지라고 하는 일종의 패키지로 만들어 운영 서버에 전달하기만 하면 된다
  • 여러 애플리케이션의 독립성과 확장성이 높아진다.
    • 소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식을 모놀리스 애플리케이션이라고 한다.
    • 모놀리스는 소규모 서비스에는 적합하지만 확장성과 유연성은 포기해야 한다는 단점
    • 모놀리스를 대체할 수 있는 방식이 마이크로서비스 구조
    • 컨테이너는 마이크로서비스 구조에서 가장 많이 사용되고 있는 가상화 기술이다.

도커의 기본 단위 : 이미지 / 컨테이너

  • 도커이미지
    • 이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상머신을 생성할 때 사용하는 iso 파일과 비슷한 개념
    • 이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용
    • 이미지는 도커 명령어로 내려 받을 수 있으므로 별도로 설치할 필요는 없음
  • 도커 컨테이너
    • 아파치 웹, nginx, mysql, 하둡, 스파크등의 도커 이미지가 있다.
    • 이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성
      • 도커 프로젝트
        • Docker Compose
        • Private Registry
        • Docker Machine
        • Kitematic
        • Docker Engine
        • 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트
        • 도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 핵심이 되는 것은 도커 엔진이다.
      가상머신과 도커 컨테이너가상머신
      • 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에 생성해 사용하는 방식
      • 여러 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 머신에 우분투, CentOS등의 운영체제가 설치
      • 하이퍼바이저에 의해 생성되고 관리되는 운영체제는 게스트 운영체제라고 하고, 다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당 받아 사용
      • 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생함
      • 또한 가상 머신을 배포하기 위한 이미지로 만들었을 때 이미지의 크기가 큰 단점이 있음
      도커 컨테이너
      • 도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없음
      • 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고, 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상머신에 비해 매우 작음

      • 애플리케이션의 개발과 배포가 편하다.
        • 컨테이너 내부에서 여러 작업을 마친 뒤 이를 운영 환경에 배포하려고 한다면, 해당 컨테이너를 도커 이미지라고 하는 일종의 패키지로 만들어 운영 서버에 전달하기만 하면 된다
      • 여러 애플리케이션의 독립성과 확장성이 높아진다.
        • 소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식을 모놀리스 애플리케이션이라고 한다.
        • 모놀리스는 소규모 서비스에는 적합하지만 확장성과 유연성은 포기해야 한다는 단점
        • 모놀리스를 대체할 수 있는 방식이 마이크로서비스 구조
        • 컨테이너는 마이크로서비스 구조에서 가장 많이 사용되고 있는 가상화 기술이다.
      도커의 기본 단위 : 이미지 / 컨테이너
      • 도커이미지
        • 이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상머신을 생성할 때 사용하는 iso 파일과 비슷한 개념
        • 이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용
        • 이미지는 도커 명령어로 내려 받을 수 있으므로 별도로 설치할 필요는 없음
      • 도커 컨테이너
        • 아파치 웹, nginx, mysql, 하둡, 스파크등의 도커 이미지가 있다.
        • 이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성
반응형

'Docker' 카테고리의 다른 글

Docker02. 도커 설치  (0) 2023.05.08