[F-lab 챌린지 76일차 TIL]

성수데브리·2023년 9월 11일
0

f-lab_java

목록 보기
64/73

질문 답변하기

그렇다면 docker를 사용하여 어플리케이션을 띄울 때에는 직접 띄우는것보다 성능적으로 낮아질 우려는 없을까요?

도커로 프로세스르 띄워도 괜찮은 이유

도커는 독립적으로 HW와 OS를 사용하는 가상머신이 아닌 프로세스기 때문에 도커로 프로세스를 띄워도 성능적으로 큰 문제는 없습니다.

도커는 프로세스처럼 똑같이 메모리의 유저 영역에 띄워지며 컴퓨터의 OS, H/W 의 자원 요청을 대리해주는 Docker Engine 을 통해 OS와 하드웨어 자원을 사용하기 때문에 마치 가상 머신처럼 동작하는 것입니다.

하지만 도커 엔진을 구동하는 비용이 있기 때문에 도커의 장점이 필요한 경우가 아니라
단순하게 컨테이너 하나를 장기간 걸쳐서 띄우는 상황처럼 굳이 도커 엔진을 띄우는 것은 낭비일 수 있습니다.

컨테이너가 OS, HW 를 공유하면서 격리된 환경을 제공하는 기술은 아래 두 기술 덕분입니다.

  • 리눅스 네임스페이스
    • 리눅스 네임스페이스는 OS의 커널은 공유하고, 유저가 사용하는 스페이스만 격리된다.
  • **리눅스 cgroup**
    • Cgroup을 통해 사용자는 CPU 시간, 시스템 메모리, 네트워크 대역폭과 같은 자원이나 이러한 자원의 조합을 시스템에서 실행 중인 사용자 정의 작업 그룹 (프로세스) 간에 할당할 수 있습니다.

출처 : https://moozii-study.tistory.com/entry/쿠버네티스-1-4-1-도커-네트워크와-의존성-문제

Docker , 그리고 컨테이너에 사용되는 커널기능들에 관하여

UnionFS : A File System of a Container

Layers

쿠버네티스 (1-4-1) | 도커 네트워크와 의존성 문제

0개의 댓글