2018년 12월 10일
도커(Docker)
1. Container 기반 Image 실행, 도커 (Docker)
- 호스트 운영체제를 공유하며 컨테이너 기반 효율적 가상화와 개발/운영 호환성을 제공하는 소프트웨어 기술
2. 도커 (Docker)의 동작원리 및 구성요소
(1) 도커 (Docker)의 동작원리
![]() |
- 도커 엔진 컨테이너는 APP과 필요 바이너리/라이브러리만 갖추고 있어 운영체제의 사용자 공간에 격리된 프로세스로 구동되기 때문에 가상머신의 이점을 누리면서 이동성 높음
(2) Docker 구성요소
| 구분 | 구성요소 | 설명 |
|---|---|---|
| Ship | Tarred Image | – 저장된 Image Tar 형태 |
| Docker file | – Image 생성 환경 파일 | |
| Repository | – Docker Image 저장소 | |
| Build | Images | – 응용프로그램 및 상태 패키지 |
| Run | Container | – 도커 Image 인스턴스 실행 공간 |
| Networks | – Host 내부 컨테이너 간 연결 | |
| Volumes | – 컨테이너 수명주기와 독립적 – 데이터 유지관리 공간 |
- 컨테이너 기술 자체는 리눅스가 이전부터 제공하고 있으며, 도커는 리눅스 커널이 탑재된 컨테이너 기술인 LXC(Linux Container) 기능 이용
3. Docker 기반 기술

| 기반기술 | 내용 |
|---|---|
| cgroups | 프로세스 그룹 리소스 제한, 격리, 모니터링 |
| Namespace | 프로세스, 네트워크 등 운영 환경 고립 |
| Libvirt | container에 공통으로 API 제공하는 라이브러리 |
| container | 어플리케이션 수행되는 독립적인 공간 |
4. Docker 컨테이너 배포 절차
(1) Docker 컨테이너 배포 절차
![]() | |
| ① 개발 | – 개발자 PC에서 APP 개발 |
| ② Repository 배포 | – 배포서버에 소스 업로드 |
| ③ Registry 배포 | – 배포서버에 소스 저장(배포) |
| ④ Image 생성 | – Doker Image 생성 후 Registery 등록 |
| ⑤ Container 생성 | – docker Image 다운로드 및 실행 |
- 일반적으로 Dockerfile – build – push 절차로 배포. run으로 실행
(2) Docker의 기대효과 및 구현 사례
| 기대 효과 | DevOps | – 개발과 운영 호환성 증가 |
| 성능 개선 | – Guest OS 계층이 없어 가볍고 빠름 | |
| 플랫폼 비종속 | – 운영체제 커널에 관계없이 실행 | |
| 구현 사례 | – Gmail 및 자사 서비스 운영 | |
| Microsoft | – Windows Server 2016에 도커 적용 | |
| Amazon | – AWS에 도커 활용 및 기능 지원 |
5. Hypervisor와 Linux Container 기반 가상화 비교
| 항목 | Hypervisor 기반 | Linux Container 기반 |
|---|---|---|
| 시스템 구성 | ![]() | ![]() |
| 실행 환경 | Guest OS 기반 | Container 기반 |
| APP종속성 | 완전 격리 | Host OS에 종속 |
| 오버헤드 | Guest OS 필요 | 오버헤드 없음 |
| 성능 | 성능 저하 발생 | 성능 저하 없음 |
| 기술 | VMWare, KVM, Xen | LXC, Docker |
- Linux Container 기반 기술은 개발 용이, 성능 장점, Hypervisor 기반 기술은 독립성이 높아 개별 서버 운영에 적합
6. 시스템 유형 별 가상화 기술 선택
| 시스템 유형 | 세부 내용 | 가상화 기술 |
|---|---|---|
| 서버 별 역할 차이 | – WAS서버와 DB서버 – 서로 다른 APP 서버 | Hypervisor |
| 서버 역할 동일 | – 개발서버와 운용서버 – 동일 APP 서버 | Linux Container |
- 동일 Driver 필요 시 Linux Container 방식 권장, 다른 Driver 필요 시 Hypervisor 방식 권장



