도커(Docker)

I. Container 기반 Image 실행, Docker

호스트 운영체제를 공유하며 컨테이너 기반 효율적 가상화와 개발/운영 호환성 제공 소프트웨어 기술
 

II. Docker의 동작원리 및 구성요소

가. Docker의 동작원리

  • 도커 엔진 컨테이너는 APP과 필요 바이너리/라이브러리만 갖추고 있어 운영체제의 사용자 공간에 격리된 프로세스로 구동되기 때문에 가상머신의 이점을 누리면서 이동성 높음

나. Docker 구성요소

구분구성요소설명
ShipTarred Image– 저장된 Image Tar 형태
Docker file– Image 생성 환경 파일
Repository– Docker Image 저장소
BuildImages– 응용프로그램 및 상태 패키지
RunContainer– 도커 Image 인스턴스 실행 공간
Networks– Host 내부 컨테이너 간 연결
Volumes– 컨테이너 수명주기와 독립적
– 데이터 유지관리 공간
  • 컨테이너 기술 자체는 리눅스가 이전부터 제공하고 있으며, 도커는 리눅스 커널이 탑재된 컨테이너 기술인 LXC(Linux Container) 기능 이용

 

III. Docker 기반 기술

기반기술내용
cgroups프로세스 그룹 리소스 제한, 격리, 모니터링
Namespace프로세스, 네트워크 등 운영 환경 고립
Libvirtcontainer에 공통으로 API 제공하는 라이브러리
container어플리케이션 수행되는 독립적인 공간

 

IV. Docker 컨테이너 배포 절차

가. Docker 컨테이너 배포 절차

① 개발– 개발자 PC에서 APP 개발
② Repository 배포– 배포서버에 소스 업로드
③ Registry 배포– 배포서버에 소스 저장(배포)
④ Image 생성– Doker Image 생성 후 Registery 등록
⑤ Container 생성– docker Image 다운로드 및 실행
  • 일반적으로 Dockerfile – build – push 절차로 배포. run으로 실행

나. Docker의 기대효과 및 구현 사례

기대
효과
DevOps– 개발과 운영 호환성 증가
성능 개선– Guest OS 계층이 없어 가볍고 빠름
플랫폼 비종속– 운영체제 커널에 관계없이 실행
구현
사례
Google– Gmail 및 자사 서비스 운영
Microsoft– Windows Server 2016에 도커 적용
Amazon– AWS에 도커 활용 및 기능 지원

 

V. Hypervisor와 Linux Container 기반 가상화 비교

항목Hypervisor 기반Linux Container 기반
시스템
구성
실행 환경Guest OS 기반Container 기반
APP종속성완전 격리Host OS에 종속
오버헤드Guest OS 필요오버헤드 없음
성능성능 저하 발생성능 저하 없음
기술VMWare, KVM, XenLXC, Docker
  • Linux Container 기반 기술은 개발 용이, 성능 장점, Hypervisor 기반 기술은 독립성이 높아 개별 서버 운영에 적합

 

VI. 시스템 유형 별 가상화 기술 선택

시스템 유형세부 내용가상화 기술
서버 별
역할 차이
– WAS서버와 DB서버
– 서로 다른 APP 서버
Hypervisor
서버 역할
동일
– 개발서버와 운용서버
– 동일 APP 서버
Linux Container
  • 동일 Driver 필요 시 Linux Container 방식 권장, 다른 Driver 필요 시 Hypervisor 방식 권장

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^