파게로그

기초 본문

콤퓨타 왕기초/Docker/Kubernetes

기초

파게 2021. 8. 6. 04:00

Docker란 무엇인가?

"Docker란 무엇인가?"라는 질문에 답하기 위해서는, "Container란 무엇인가?"라는 질문에 대해서 먼저 답해보자. 아래는 도커 공식 홈페이지를 참고했다. 컨테이너란 "a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another"이다. 즉, 어플리케이션이 빠르면서도 환경에 영향을 받지 않아 높은 신뢰성을 가지고 작동할 수 있도록, 코드와 모든 의존성을 감싸는 소프트웨어의 표준 단위이다.

Docker 컨테이너 이미지는 가볍고 독립적으로 작동하는 실행가능한 소프트웨어 패키지로서, 코드, 시스템 도구, 시스템 라이브러리, 도구 등 어플리케이션이 동작하는 데 필요한 모든 것을 포함한다. 그리고 Docker란 컨테이너형으로 작동하는 가상화 기술을 구현하기 위해서 개발된 애플리케이션 및 CLI, 명령어 모음 등이라 할 수 있다.

Docker 컨테이너의 경우 Docker 엔진에서 동작하면 컨테이너 이미지는 런타임에 컨테이너가 된다. 이는 Linux와 Windows 기반의 어플리케이션 둘 다에게 유효하며, 컨테이너화된 소프트웨어는 인프라스트럭처와 관계없이 항상 동일하게 동작한다. 결국 컨테이너는 소프트웨어를 그 환경으로부터 분리시키고, 개발과 스테이징 환경 사이에 차이가 있더라도 동일하게 동작하도록 보증하는 역할을 담당한다.

 

 

Docker의 장점

  • 가상화 소프트웨어를 사용할 때와 달리 직접 운영체제 설치하는 과정 등을 수반하지 않으므로, 속도가 빠르고 수작업으로 인한 오류가 감소한다.
  • 경량 컨테이너로서 개발 환경, 테스트 환경뿐만 아니라 운영 환경에서도 사용할 수 있다.
  • 이식성이 뛰어나 운영 환경과 거의 동일한 개발 환경을 구축할 수 있다.
  • 컨테이너 간 연동, 클라우드 플랫폼 등이 지원된다.

 

키워드

🚢 컨테이너형 가상화 기술(Operation-system-level virtualization)

가상화 소프트웨어가 없더라도 OS의 리소스를 격리하여 가상 OS, 즉 컨테이너로 만들 수 있다. 이는 다음과 같은 도식을 통해 이해할 수 있다.

 

 

한편 야마다 아키노리(2019)에서는 리소스 분리 목적의 시스템 컨테이너로서 LXC가 먼저 자리를 잡았으나, 애플리케이션 배포에 문제가 있었던 만큼 여기에 최적화된 도커가 선두를 차지하게 되었다고 하면서, 구체적인 이점으로 다음을 제시한다.

 

  • host OS의 영향을 받지 않는 실행 환경(Docker Engine을 이용한 실행 환경 표준화)
  • DSL(Dockerfile)을 이용한 컨테이너 구성 및 애플리케이션 배포 정의
  • 이미지 버전 관리
  • 레이어 구조를 갖는 이미지 포맷(차분 빌드가 가능함)
  • 도커 레지스트리(이미지 저장 서버 역할을 함)
  • 프로그램 가능한 다양한 기능의 API

 

Comments