gmlwlsl 님의 블로그

[Docker] 개념 정리 본문

Visualizer

[Docker] 개념 정리

gmlwlsl 2024. 6. 27. 17:21

도커

컨테이너 기반의 가상화 시스템

 

도커 엔진

컨테이너를 생성하고 관리하는 주체 이 자체로도 컨테이너를 제어할 수 있음

 

가상화

물리적인 서버 하나를 여러 개의 가상 서버로 쪼갬

→ 하나의 컴퓨터에 많은 서버를 돌리면 성능이 저하됨

→ 여러 개의 운영체제의 교집합은 묶어 도커에 기반을 두고, 나머지 필요한 부분만 가볍게 가상화하는 것이 컨테이너

 

컨테이너

가상화된 공간을 생성할 때, 프로세스 단위의 격리 환경을 만듦 커널을 공유하여 사용

이때, 리눅스 자체의 기능을 이용하는데

  • chroot : 컨테이너 안에서의 모든 작업은 루트로 전환되어 작업 * namespace : app별로 별도의 작업공간을 생성
  • cgroup ; ns별로 별도의 리소스 할당 등을 사용함

기본적으로 사설 ip가 들어가 있음 (우분투의 특정 포트로 들어옴 → 포트포워딩 → 컨테이너 포트)

 

도커 아키텍처

  • client : 도커 명령어 수행
  • host : 컨테이너와 이미지 관리
  • daemon : 도커 엔진
  • registry : 외부 이미지 저장소, 다른 사람들이 공유한 이미지를 host에 pull할 수 있음 (이를 run하면 컨테이너가 됨)

 

docker(container run time)가 os의 커널을 돌며, 격리된 containter별로 기능을 제공

각 Container는 서로 다른 process id로 관리하며 이름 구분하지 않음, 서로 간섭 x, docker0에 자동으로 연결되고 docker0는 사설ip를 제공

 

도커 이미지와 컨테이너

이미지:컨테이너 = 1:N

 

📍 같은 도커 이미지 a, b로 두 개의 컨테이너를 생성한 뒤에 a 컨테이너를 수정해도 b 컨테이너에는 영향을 주지 않음

 

참고 사이트 : https://velog.io/@rivkode/Docker-란