2018년 12월 10일
도커(Docker)
I. Container 기반 Image 실행, Docker
호스트 운영체제를 공유하며 컨테이너 기반 효율적 가상화와 개발/운영 호환성 제공 소프트웨어 기술
II. Docker의 동작원리 및 구성요소
가. Docker의 동작원리
- 도커 엔진 컨테이너는 APP과 필요 바이너리/라이브러리만 갖추고 있어 운영체제의 사용자 공간에 격리된 프로세스로 구동되기 때문에 가상머신의 이점을 누리면서 이동성 높음
나. Docker 구성요소
구분 | 구성요소 | 설명 |
---|---|---|
Ship | Tarred Image | – 저장된 Image Tar 형태 |
Docker file | – Image 생성 환경 파일 | |
Repository | – Docker Image 저장소 | |
Build | Images | – 응용프로그램 및 상태 패키지 |
Run | Container | – 도커 Image 인스턴스 실행 공간 |
Networks | – Host 내부 컨테이너 간 연결 | |
Volumes | – 컨테이너 수명주기와 독립적 – 데이터 유지관리 공간 |
- 컨테이너 기술 자체는 리눅스가 이전부터 제공하고 있으며, 도커는 리눅스 커널이 탑재된 컨테이너 기술인 LXC(Linux Container) 기능 이용
III. Docker 기반 기술
기반기술 | 내용 |
---|---|
cgroups | 프로세스 그룹 리소스 제한, 격리, 모니터링 |
Namespace | 프로세스, 네트워크 등 운영 환경 고립 |
Libvirt | container에 공통으로 API 제공하는 라이브러리 |
container | 어플리케이션 수행되는 독립적인 공간 |
IV. Docker 컨테이너 배포 절차
가. Docker 컨테이너 배포 절차
① 개발 | – 개발자 PC에서 APP 개발 |
② Repository 배포 | – 배포서버에 소스 업로드 |
③ Registry 배포 | – 배포서버에 소스 저장(배포) |
④ Image 생성 | – Doker Image 생성 후 Registery 등록 |
⑤ Container 생성 | – docker Image 다운로드 및 실행 |
- 일반적으로 Dockerfile – build – push 절차로 배포. run으로 실행
나. Docker의 기대효과 및 구현 사례
기대 효과 | DevOps | – 개발과 운영 호환성 증가 |
성능 개선 | – Guest OS 계층이 없어 가볍고 빠름 | |
플랫폼 비종속 | – 운영체제 커널에 관계없이 실행 | |
구현 사례 | – Gmail 및 자사 서비스 운영 | |
Microsoft | – Windows Server 2016에 도커 적용 | |
Amazon | – AWS에 도커 활용 및 기능 지원 |
V. Hypervisor와 Linux Container 기반 가상화 비교
항목 | Hypervisor 기반 | Linux Container 기반 |
---|---|---|
시스템 구성 | ||
실행 환경 | Guest OS 기반 | Container 기반 |
APP종속성 | 완전 격리 | Host OS에 종속 |
오버헤드 | Guest OS 필요 | 오버헤드 없음 |
성능 | 성능 저하 발생 | 성능 저하 없음 |
기술 | VMWare, KVM, Xen | LXC, Docker |
- Linux Container 기반 기술은 개발 용이, 성능 장점, Hypervisor 기반 기술은 독립성이 높아 개별 서버 운영에 적합
VI. 시스템 유형 별 가상화 기술 선택
시스템 유형 | 세부 내용 | 가상화 기술 |
---|---|---|
서버 별 역할 차이 | – WAS서버와 DB서버 – 서로 다른 APP 서버 | Hypervisor |
서버 역할 동일 | – 개발서버와 운용서버 – 동일 APP 서버 | Linux Container |
- 동일 Driver 필요 시 Linux Container 방식 권장, 다른 Driver 필요 시 Hypervisor 방식 권장