본문 바로가기

Infra/Docker

[Docker] Docker의 기본적인 이론

도커란?

  • 도커는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트입니다. 도커는 Go 언어로 개발되었습니다.
  • 가상머신과는 달리 도커 컨테이너는 리소스 부분이나 다른 여러부분에서 가상화 서버와 다르게 손실이 거의 없어서 차세대 인프라로 주목받고 있습니다.

도커엔진이란?

  • 컨테이너를 생성하고 관리하는 주체로서, 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트이다.

가상 머신과 도커 컨테이너

가상화 기술

  • 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이다. 이러한 여러 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 가상머신에는 각각의 os 가 설치되서 운영된다.
  • 하이퍼바이저에 의해 생성되고 관리되는 운영체제는 게스트 운영체제라고 하며, 다른 게스트 운영체제와 완전 독립된 공간과 시스템 자원을 할당받아 사용한다.
  • 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생한다.
  • 가상머신은 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 저눕 포함하기 때문에 가상 머신을 배포하기 위한 이미지로 만들었을 때 이미지의 크기가 커진다.

컨테이너

  • 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없다.
  • 컨테이너에 필요한 커널은 호스트의 커널을 공유하고, 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재한다. 그래서 이미지의 용량이 작다.
  • 배포하는 시간이 가상화 기술에 비해서 빠르다.

 

많은 회사에서 도커 및 컨테이너 인프라 구조를 도입하는 이유

  1. 애플리케이션의 개발과 배포가 편해집니다.
    - 도커 컨테이너에서 아무리 많은 행동을 해도 HOST OS에는 영향을 끼치지 않습니다.
    - 운영에 배포하려고 할 때 해당 컨테이너의 이미지만 만들어 전달하기만 하면 된다.
  2. 여러 서비스와의 독립성과 확장성이 높아진다.
    - 프로그램 내에서 모든 로직 구현 방식인 모놀리스 방식보다, 마이크로 서비스 구조를 따를 수 있다.

 

도커 엔진의 종류 및 버전

  • 2017년 이후 도커 엔진은 도커 EE와 CE로 구분된다.
  • EE는 기업용 솔루션이며, 유료버전이며 3개월마다 안정화된 버전으로서 릴리즈됩니다.
  • CE는 무료로 제공됩니다. 3개월, 1개월 단위로 릴리즈 됩니다.

 

리눅스 도커 엔진 설치 사전 확인사항

  • 최신 버전 커널을 사용하고 있는지 확인해야 합니다. HOST 운영체제가 최소 3.10 버전 이상을 사용해야 합니다.

서버 확인 명령어

uname -r