Docker

우야·2021년 6월 30일

컨테이너

  • 시스템의 나머지 부분과 격리된 프로세스 Set

Docker

  • 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술
  • 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼
  • Linux 커널과 함께 Cgroups 및 Namespace와 같은 커널의 기능을 사용하여, 프로세스를 분리함으로써 독릴접으로 실행될 수 있도록 한다.
    • Cgroups : 컨테이너가 사용할 수 있는 리소스양을 제어하는 역할
    • Namespace : 네임스페이스로 영역을 나눠주는 역할
      • PID 네임스페이스 : 프로세스 영역 (컨테이너내부 실행중인 프로세스만 보여줌)
      • 네트워크 네임스페이스 : 네트워크 영역 (컨테이너내부 프로세스가 특정 네트워크만사용하게 설정)
  • 컨테이너 환경내에서 애플리케이션 배포를 자동화 도구
  • 컨테이너 생성 및 구축, 이미지 전송, 이미지 버전 관리 프로세스를 용이하게 해준다.

특징

  • 모듈성
  • 계층 및 이미지 버전
    • 이미지 파일은 일련의 계층으로 이루어져 있으며, 이계층들은 단일 이미지로 결합되어 있음
    • 이미지가 변경될때 계층이 생성 ( 실행, 복사 등의 명령 )
    • 새로운 컨테이너 구축시, 이러한 계층을 재사용하므로 구축 프로세스가 빨라짐
  • 롤백
    • 이미지의 계층에서 적절하지 않은경우 이전 버전으로 롤백 가능
  • 신속한 배포
    • 전통적인 하드웨어에서 부터 OS등의 셋팅단계가 없음

제약

  • 수백개로 세분화된 컨테이너와 컨테이너화된 앱을 많이 사용하게 되면, 관리와 오케이스트레이션이 매우 어려워질수 있음
  • 모든 컨테이너 전체에서 네트워킹, 보안, 텔레메트리와 같은 서비스를 제공하기 위해서는 컨테이너를 그룹화 해야함.
  • 여기에서 쿠버네티스가 사용됨
profile
Fullstack developer

0개의 댓글