본문 바로가기
Docker

[Docker] Docker 개념 정리

by 젊은오리 2022. 3. 8.
728x90

Docker란?

도커란 컨테이너 기반의 가상화 플랫폼으로, 컨테이너 상에서 서버를 셋업해 놓을 수 있다. 따라서 기반 환경이 다르더라도, 언제든 내가 만든 컨테이너를 실행하면, 동일한 서버 셋업이 가능하다.

 

Docker의 특징

  • 도커는 컨테이너를 관리하는 플랫폼이다. 
  • 컨테이너 안에는 라이브러리, 시스템, 코드 등의 소프트웨어를 실행하는데 필요한 것들이 포함될 수 있다.
  • 어플리케이션을 보다 빠르게 구축할 수 있는 소프트웨어 플랫폼이다. 
  • 도커를 사용하면 서버를 신속하게 배포 및 확장 가능하다. 
  • 다양한 프로그램을 컨테이너로 분리해서 동일한 인터페이스를 제공하면 배포 및 관리를 단순하게 가능하다.

 

Docker의 아키텍처

도커는 기본적으로 클라이언트-서버 아키텍처이다. 도커 클라이언트와 데몬은 소켓이나 Restful API를 통해서 통신한다. 자세한 내부구조는 도커, 컨테이너와 이미지가 무엇인지 알아보고 그림을 보면서 이해하자.

컨테이너란?

  • 어플리케이션을 구동하는 환경을 뜻한다. 사용자가 컨테이너에 프로그램을 띄워서 돌리는 것이다.(디렉토리와 비슷한 개념)
  • 컨테이너는 실행하고, 시작되고, 중지되고, 삭제될 수 있다.
  • 컨테이너를 사용하면 기능들이 각각 분리되어서 서로 영향을 미치지 않는다.
  • 구글은 모든 서비스들이 컨테이너로 동작하고 매주 20억개 이상의 컨테이너를 구동한다고 한다. 

이미지란?

  • 이미지는 읽기전용 탬플릿이다. ex) 우분투, 아파치, 설치된 웹어플리케이션..
  • 이미지는 컨테이너를 생성하기 위해서 사용된다. 
  • 이미지는 도커의 빌드 컴포넌트이다.

 

※ 컨테이너와 가상머신(VM)의 차이

기존의 Vmware나 VirtualBox와 같은 가상머신은 기존의 os위에 또 다른 os를 가상화하여 사용했다. 우리가 window환경에서 ubuntu를 깔아서 사용하는 것을 예로 들 수 있다. 이 방식은 사용법이 간단하지만 무겁고 느리다..(램을 많이 잡아먹는다) 이를 개선하기 위해서 프로세스를 격리하는 컨테이너방식이 등장한다.

하나의 서버에 여러개의 컨테이너를 실행하면 독립적으로 실행되어 마치 가벼운 VM을 사용하는 느낌을 준다. 실행중인 컨테이너에 접속하여 패키지를 설치하거나, 프로세스를 실행할 수 있다. 또한 CPU나 메모리 사용량을 제한할 수 있고 호스트의 특정 포트와 연결하거나 특정 디렉토리를 내부 디렉토리인 것처럼 사용 가능하다.

VM vs Container

728x90

댓글