Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이열매의 메모장

Docker - 1. 도커란 본문

Docker

Docker - 1. 도커란

이열매 2019. 10. 8. 13:59

도커(Docker)

 

이미지란?

  • 특정 프로세스를 실행하기 위한 환경  
  • 애플리케이션 실행에 필요한 코드, 실행 환경, 라이브러리, 환경 변수, 설정값 등을 포함  
  • 상태 값이 없고 변하지 않음 -> 배포/롤백이 손쉬움  

 

컨테이너란?

  • 실행 가능한 이미지의 인스턴스  
  • 격리된 공간에서 프로세스가 동작하여 빠른 속도  
  • 커널까지 통째로 가상화하는 Hypervisor와 달리 파일시스템만 가상화
  • OS, 라이브러리, 어플리케이션을 하나로 패키징
    • 어플리케이션과 라이브러리를 패키징하므로 의존성 문제 ↓

    • OS와 관계없이 독립적인 실행이 가능

  • 서비스 배포/롤백이 가장 큰 특징

   

호스트 PC 위에 도커(상)와 VM(하)이 올라간 모습

 

    •  

컨테이너 기술 요소

Namespace

  • 프로세스 별로 네트워크 리소스(네임 스페이스) 격리
  • 네임 스페이스 종류
    • Mnt : 파일 시스템 마운트
    • Pid : 독립적인 프로세스 공간 할당
    • Net : 중복 포트 바인딩, 네트워크 충돌 방지
    • Ipc : 프로세스 간 독립적인 통신 통로 할당
    • Uts : 독립적인 hostname 할당
    • User : 독립적인 사용자 할당                              

 

 

CGroup

  • Control Group의 약자
  • 하드웨어 리소스 (CPU 시간, 시스템 메모리, 네트워크 대역폭) 그룹을 프로세스에 할당
  • 해당 리소스 별로 정해진 양만 사용하도록 제한 및 격리하는 커널 기능
  • 리소스 할당 방식
    • Static Binding 
      • cgroup 이 특정 리소스만 사용
    • Priority 기반
      • cgroup 에게 리소스 사용의 우선순위를 부여
      • 쿠버네티스 사용 방식
    • Limit
      • cgroup이 특정 시간만 리소스 사용

 

 

unionFS

  • 도커 레이어에서 컨테이너 별 독립된 파일 시스템 블록 
  • 파일 시스템 격리의 목적

 

 

도커란?

  • 컨테이너 기반으로 애플리케이션을 개발, 배포 및 실행할 수 있도록 하는 가상화 플랫폼  
  • 두 개의 독립된 컴포넌트로 구성
    • 도커 엔진
      • 컨테이너 생성, 실행
      • 데몬 프로세스 유형의 서버
      • 빠르고 간편한 인터페이스 제공
      • 일반적으로 도커는 도커 엔진을 의미
    • 도커 허브
      • 컨테이너 배포를 위한 클라우드 서비스 제공
      • 공개 레지스트리
      • 다른 사람들이 작업한 컨테이너 이미지 그대로 이용 가능

 

도커의 특징

  • 컨테이너를 git과 같이 형상 관리 할 수 있도록 제공  
  • 클라이언트와 서버로 구성  
  • 모든 명령은 클라이언트에서 REST로 서버에 요청되어 서버에서 수행  

 

도커의 장점

  • 가벼운 무게
    • 사용자 OS 커널 사용 즉, 게스트 OS 탑재 필요 x
  • 유연성
    • 아무리 복잡해도 모듈별 컨테이너 화 가능            
  • 교환 가능
    • 업데이트 및 업그레이드 즉시 배포 가능            
  • 이식성
    • 로컬 구축, 클라우드 배포 등 어디서나 실행 가능            
  • 확장성 (Scalability)
    • 이미지 빌드까지는 오래 걸리나 복제본을 늘리는 등 확장에 용이
    • 가장 큰 이유라 할 수 있다.

 

컨테이너의 필요성

  • 마이크로 서비스 아키텍처(MSA) 발전으로 인해 작아진 서비스 단위
  • 다양한 이미지를 VM으로 관리하기엔 크기 및 속도 문제 발생

 

도커의 동작 방식

도커 동작 방식

 

  1. 도커 이미지를 빌드하기 위해 Dockerfile 을 작성한다.
  2. Dockerfile 과 함께 도커 빌드 요청을 보낸다.
  3. 도커 서버에서는 도커 이미지를 빌드하여 로컬 저장소에 저장한다.
  4. 도커 push 명령을 받으면 도커 서버는 로컬의 도커 이미지를 도커 레지스트리에 올린다.
  5. 도커 run 명령을 배포할 도커 서버에 전송한다.
  6. 도커 run 명령을 받은 도커 서버는 도커 레지스트리에 이미지를 로컬 저장소로 다운 받는다.
  7. 도커 이미지를 이용하여 컨테이너를 시작한다.

 

도커 버전

  • 엔터프라이즈

    • 개선사항 적용한 상업용 에디션

    • 기업에서 사용

  • 커뮤니티

    • 오픈소스 에디션

 

 

 

'Docker' 카테고리의 다른 글

도커 캐시 디렉토리 경로 변경  (0) 2019.10.31
Docker - 3. 자동 빌드  (0) 2019.10.21
Docker - 2. 도커 사용하기  (0) 2019.10.14
쿠버네티스  (0) 2019.10.09
도커 Allow property 이슈  (0) 2019.10.08
Comments