w.llama 2024. 8. 8. 23:56

도커란?

도커는 애플리케이션을 컨테이너라는 독립된 환경에 패키징하고 배포할수 있게 해주는 도구이다
컨테이너는 애플리케이션 실행에 필요한 모든 요소(코드, 런타임, 시스템 도구, 라이브러리 등)이 표함되어 있다.

 

  • 주요 특징
    •  컨테이너 기술 활용
      - 호스트 OS의 기능을 사용하면서 프로세스를 격리해 독립된 실행환경을 제공
    •  이미지 기반
      - 도커 이미지를 통해 애플리케이션과 그 실행 환경을 패키징
    • 레이어 구조
      - 이미지는 여러 읽기 전용 레이어로 구성되어 효율적인 저장과 배포가 가능
  • 도커의 장점
    • 환경 독립성
      -  애플리케이션이 호스트 OS나 다른 컨테이너와 충돌없이 독립적으로 실행됩
    • 간편한 배포
      - 도커 이미지를 만들어 운영 서버에서 쉽게 전달할 수 있다.
    • 마이크로서비스 지원
      - 각 컨테이너를 독립적인 서비스 모듈로 구성할 수 있다.
    • 일관된 개발 환경
      - 개발자의 로컬 환경과 실제 서버환경의 차이로 인한 문제를 해결
  • 도커 VS 가상 머신
    • 도커 컨테이너는 가상 머신에 비해 더 가볍고 효율적이다. 컨테이너는 호스트 OS의 커널을 공유하면서 필요한 부분만 격리하기 때문에, 가상 머신보다 빠르게 시작되고 적은 리소스를 사용한다 도커를 사용하면 개발자들은 애플리케이션을 환경에 구애 받지 않고 신속하게 배포하고 확장할 수 있다.
  • 도커 이미지와 컨테이너의 주요 차이점
    • 도커 이미지
      - 컨테이너를 생성하기 위한 템플릿 또는 읽기 전용 파일시스템
    • 도커 컨테이너
      - 이미지를 기반으로 실행되는 실제 인스턴스 또는 프로세스
  • 도커 이미지
    • 읽기 전용 레이어로 구성
    • 애플리케이션 실행에 필요한 모든 파일과 설정을 포함
    • 변경되지 않는 불변성을 가짐
    • DockerHub를 통해 버전 관리 및 배포가 가능
  • 도커 컨테이너 
    • 이미지를 기반으로 생성, 실행중인 상태를 나타냄
    • 읽기-쓰기가 가능한 레이어를 가지고 있어 변경사항을 저장할 수 있음
    • 이미지의 파일 시스템을 기반으로 실행된 리눅스 프로세스
  • 관계
    • 하나의 이미지로 여러 컨테이너 생성가능
    • 컨테이너 삭제해도 이미지는 남아있음
    • 컨테이너의 변경사항을 커밋하여 새로운 이미지 생성가능
  • 도커 단점 !!
    • 리눅스 기반 제한
      • 리눅스 운영체제에서 실행 가능한 소프트웨어만 지원
      • Window나 MacOS에서 도커를 사용하려면 추가설정이 필요
    • 리소스 공유로 인한 잠재적 위험
      • 여러 컨테이너가 호스트 OS의 커널을 공유하기때문에, 보안 취약점이 발생할 경우 전체 시스템에 영향이감
    • 성능 오버헤드
      • 컨테이너화로 인한 약간의 성능 저하가 발생 할 수 있다.
      • 특히 I/O 집약정인 작업에서 이러한 현상이 두드러질 수 있다.
    • 복잡성 증가
      • 도커를 효과적으로 사용하기 위해서는 학습이 곡선이 존재한다
      • 컨테이너 관리, 네트워킹, 볼륨관리등 새로운 개념을 이해해야함
    • 데이터 지속성 관리
      • 컨테이너는 기본적으로 휘발성이므로, 데이터의 영구저장을 위해 별도의 볼륨관리가 필요
    • 모니터링 및 디버깅 어려움
      • 분산된 환경에서 여러 컨테이너를 모니터링하고 디버깅하는 것이 복잡할수 있음
    • 리소스 제한
      • 호스트 서버의 리소스를 여러 컨테이너가 공유하므로, 개별 컨테이너의 리소스 사용에 제한이 있을 수 있음.