Docker 컨테이너

김승윤·2021년 10월 27일
0

Docker

  • Docker는 리눅스 상에서 컨테이너 방식으로 프로세스를 격리해서 실행하고 관리할 수 있도록 도와주며, 계층화된 파일 시스템에 기반해 효율적으로 이미지를 구축할 수 있도록 지원하는 플랫폼

장점

  • 쉽고 빠른 실행 환경 구축

  • 가볍고 빠른 실행 속도

  • 하드웨어 자원 절감

  • 공유 환경 제공

  • 개발한 프로그램 그대로 배포 운영

Docker 아키텍쳐

Docker는 client-server 모델로 동작되고 기본 통신은 https 프로토콜을 사용

  • Docker Daemon
    • 컨테이너를 관리하는 서비스 데몬
    • dockerd 데몬
  • Docker Client
    • 컨테이너를 관리하거나 실행하기 위해 Docker 데몬과 상호작용하는 도구
    • Docker 클라이언트와 데몬은 RESTful API를 통해 내부적으로 통신
    • docker command
  • Docker Registry
    • Docker 커뮤니티에 의해 생성된 모든 Docker 이미지가 저장된 공용 저장소
    • http://hub.docker.com
  • Docker Images
    • 컨테이너 실행에 필요한 파일과 설정 값 등을 포함
    • 변경할 수 없음
    • 추가되고 변경되는 값들은 컨테이너에 저장
    • Docker Hub에 등록하거나 Docker Registry를 구성하여 관리 가능
  • Docker Containers
    • 컨테이너는 이미지를 실행한 상태
    • 같은 이미지에서 여러 개의 컨테이너 생성 가능

컨테이너

컨테이너는 호스트 운영체제 상에서 논리적으로 구역을 나눠 애플리케이션 동작을 위한 라이브러리와 애플리케이션의 실행 명령을 넣어 독립적으로 동작시키는 가상화 환경

Why Container?

  • 소프트웨어 개발, 배포, 실행 방식이 달라져 웹이나 앱 기반의 애플리케이션은 짧은 라이프 사이클을 요구
  • Docker는 컨테이너 가상화 기술을 사용하기 때문에 다른 가상화에 비해 가볍고 빠르게 동작하는 것이 특징
  • 사용한 리소스만큼 요금이 부가되는 클라우드 환경에서는 비용 절감에도 도움
    • Resources
    • Portability
    • Lightweight
    • Deploying

컨테이너 isolate 지원

  • PID
  • USER
  • IPC
  • NETWORK
  • UTS
  • Cgroup
  • Time

컨테이너로 구성한 서비스 실행

장점

  • 구성
    • 서비스 제공에 필요한 모든 요소를 사전에 구현
    • 컨테이너를 실행할 호스트 구성과 상관없이 어떤 호스트에도 서비스 배포 가능
  • 분리
    • 각 컨테이너는 자신의 파일 시스템과 네트워크 인터페이스를 가지므로 동일 서비스를 여러 개 구성 가능

컨테이너와 컨테이너 이미지

Docker image

  • Docker 컨테이너 생성하는 instruction을 포함하는 읽기 전용 템플릿

Docker Container

  • 이미지의 실행 가능한 instants
  • 컨테이너를 create, start, stop, delete 할 수 있음

컨테이너 Layer

  • 읽기 전용 템플릿

  • 컨테이너 인스턴스를 저장한 파일

  • 컨테이너 파일시스템 -AUFS

0개의 댓글