[Docker] Docker 컨테이너, Docker Architecture 개념

sm·2023년 3월 18일
0

Web

목록 보기
22/24

도커(Docker)?

도커(Docker)란 리눅스 컨테이너를 기반으로 하여 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램.

  • Go언어로 작성된 Linux 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼
  • 애플리케이션 실행 환경을 코드로 작성할 수 있고, 하나의 Host OS를 공유해 사용할 수 있다.

그러면 Container란?

  • Linux 기반의 기술 중 하나로 필요한 라이브러리와 애플리케이션을 모아 별도의 서버처럼 구성한 것
  • 네트워크 설정, 환경 변수 등의 시스템 자원을 독립적으로 소유하고 있다!

VM Virtual Machines

  • Hypervisor 라는 것을 통해 컴퓨터가 가지고 있는 리소스들에 대해 VM별로 배분하고 각 VM이 독립적인 os를 갖고 동작한다
  • 확장성 낮음
    • 독립적인 플랫폼을 하나 증가시킬 때마다 OS를 계속 만들어야 한다.
  • 메모리나 자원이 유동적으로 관리되는 것이 아닌 처음부터 정해놓고 실행하기 때문에 비효율적이다.

Containers

  • 하나의 Host OS위에서 각각의 독립적인 프로그램처럼 관리되고 실행된다
  • 확장성, 속도 높음
    • 불필요한 os 만드는 작업이나 인프라를 독립적으로 나눌 필요 없이 실행할 수 있다.
  • VM 보다 비교적 빠르게 세팅할 수 있고 VM과 비교해 크기가 작기 때문에 메모리를 덜 소모한다.

컨테이너를 쓰냐 안쓰냐의 차이?
: 컨테이너를 관리하는 프로그램만 있으면, 소스코드만으로도 동일한 프로그램 실행 가능하다.


Docker 아키텍쳐

Docker Daemon

  • Docker API 요청 수신, Image, Container, 네트워크와 같은 Docker 객체 및 Docker 서비스를 관리한다.

Docker Client

  • Docker 사용자가 Docker와 상호작용하기 위한 방법으로 기본적인 Docker 명령어를 통해 Docker Daemon과 통신한다
  • docker run과 같은 명령어를 이용해 Docker를 실행할 수 있다.

Docker Registry

  • Docker 이미지 저장한다
  • Docker Hub이라는 공용 Registry와 개인 private한 Registry에서 Docker이미지를 관리한다.
  • 일반적으로는 Docker Hub이라는 공용 Registry에서 실행한다.

Docker Image

  • 이미지 = 실행파일
  • 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것으로 Immutable(불변적)하다.
  • 이미지는 Docker Hub에 저장되고, 그곳에서 다운받아 사용할 수 있다.
profile
📝

0개의 댓글