시냅스

Docker 기본 개념 정리 본문

Infra/Docker

Docker 기본 개념 정리

ted k 2022. 11. 2. 15:52

Docker 란

  • 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 민 운용하기 위한 오픈소스 플랫폼
  • 인프라 환경을 컨테이너로 관리
    • 애플리케이션 실행에 필요한 모든 파일 및 디렉토리들을 컨테이너로 모은다.
  • 애플리케이션 실행에 필요한 모든 것이 포함된 Docker 이미지를 작성하여 컨테이너를 가동시킨다.
  • 이미지는 Docker가 설치된 환경이라면 어디서든 실행할 수 있는 높은 이식성을 갖게 된다.

 

 

기본 기능 3가지

  • build
    • 애플리케이션의 실행에 필요한 모든 것을 모아 Docker 이미지로 만듬
    • Docker 명령을 통한 수동 / Dockerfile 작성을 자동으로 이미지를 만들 수 있음
  • ship
    • Docker hub을 통해 이미지를 받을 수 있음
  • run
    • 컨테이너 단위로 서버 기능을 작동시킨다.
    • 프로세스를 실행시키는 것 처럼 이미지를 빠르게 실행시킬 수 있음.

 

Docker의 작동 구조

  • Linux 커널 기술을 베이스로 구성
  • 컨테이너를 구획하는 기술은 namespace를 사용한다.
    • 한 덩어리의 데이터에 이름을 붙여 분할하는 기술
    • 충돌 가능성을 줄이고, 쉽게 참조할 수 있게 한다.
    • PID namespce
      • PID와 프로세스를 격리시킨다.
      • namespace가 다른 프로세스끼리 서로 액세스 할 수 없음
    • Network namespace
      • 네트워크 리소스를 격리된 namespace 마다 독립적으로 가진다.
    • UID namespace
    • MOUNT namespace
      • 격리된 파일 시스템 트리
    • UTS namespace
      • 호스트 / 도메인 명
    • IPC namespace
      • shared memory, semaphore, message queue ... some resources
  • 릴리스 관리 장치 (cgroups)
    • 물리 머신 상의 자원을 여러 컨테이너가 공유
    • linux kernal 의 control groups 기능을 사용
      • 프로세스, 스레드에 대한 관리
      • 그룹별로 제한을 둔다.
    • 한 컨테이너가 모두 독점하는 것을 막음
  • 네트워크 구성 (가상 브리지 / 가상 NIC)
    • docker0 은 docker의 가상 브리지 네트워크
    • 외부와의 접속은 NAPT를 활용
    • NAPT
      • 하나의 IP 주소를 여러 컴퓨터가 공유
      • IP주소와 포트 번호로 변환
Comments