3. 『가상화』
wikipedia 에서는 다음과 같이 정의
컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어
물리적인 컴퓨터 리소스의 특징을
다른 시스템, 응용 프로그램, 최종 사용자들이
리소스와 상호 작용하는 방식으로부터 감추는 기술
어렵고 복잡해~@.@
(그림으로 예를 들어보면)
4. 『가상화』 기술의 예
Oracle
OS
서버
Tomcat
OS
서버
Oracle
OS
가상화기술
MySQL
OS
일반서버 쉽게(?) 볼 수 있는 ‘서버 가상화’
5. 『Hypervisor』
wikipedia 에서는 다음과 같이 정의
호스트 컴퓨터에서 다수의 운영 체제(operating system)를
동시에 실행하기 위한 논리적 플랫폼(platform)
Hypervisor 는 VMM(Virtual Machine Monitor)으로도 불림.
(이것도 그림으로 보면..)
6. 『Hypervisor』 2가지 형태
Oracle
GuestOS
Oracle
GuestOS
Hypervisor
Hardware
Type-I (Bare-metal)
GuestOS
Tomcat
Hypervisor
Hardware
Oracle
GuestOS
Hosted OS
Type-II (Hosted)
7. Docker 소개 시작!
앞에서 VM에 대한 이야기는 왜 했을까?
Docker는..
VM과 비슷해보이지만 다름!
그리고 VM과는 그 '의도'가 다름
9. Docker는..
(고래 등짝에 올려진 컨테이너 박스들처럼)
프로그램과 실행에 필요한것들을 박스(?)로 포장하고,
포장된 박스(?)를 손쉽게 이동해서,
어디서나 간단하게 실행할 수 있는
도구와 환경을 제공하는 오픈소스 플랫폼.
Write Once,
Run Anywhere
Build, Ship and Run
Any App, Anywhere
10. Docker와 VM 다른점 『구조』
Image. https://www.docker.com/whatisdocker/
Hypervisor의 자리를 Docker Engine이 대체
VM과는 다르게 (형태를 갖춘) GuestOS를 가지지 않음
11. Docker와 VM 다른점 『활용』
기존의 VM은 가상화를 통해
격리된 실행 환경을 만들었다면
Docker 또한 격리된 실행 환경을 제공하지만
이와함께 Packaging(포장), Delivery(전달)등
통합적인 환경을 제공.
(다음장에서 간단한 그림으로 확인)
13. Docker Repositories 종류
Docker
Repositories
<PUBLIC>
myServer
Docker
Repositories
Docker
Repositories
<PRIVATE>
registry 서버 설치
Official
Repositories
일반 User
vendors/contributors
http://
registry.hub.dock
er.com
https://registry.hub.docker.com/repos/
14. 그렇다면 Docker의 장점은?
VM대비 상대적으로 적은 Overhead(CPU, Memory, Storage)
실행가능한 모든 프로그램을 패키징 가능
간편한 이미지 관리(create, push, pull)
생성된 이미지는 어디서나 실행가능
Linux에서 실행가능한 프로그램이라면
패키징 작업 및
어떠한 Linux 환경으로도 이동 및 실행 가능.
15. Docker가 사용하는 기술
Image. http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer
16. 『LXC』 - LinuX Containers
wikipedia에서는..
LXC (LinuX Containers) is an
operating system–level virtualization method
for running multiple isolated Linux systems (containers)
on a single control host.
사용기술: chroot, namespaces, cgroups...
추천링크: LinuX Container’s official page
https://linuxcontainers.org/
17. 『chroot』 - Change Root
시스템의 root 구성을
임의로 구성한 위치로 binding
Image. http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7
18. 『cgroups』 - Control Groups
Linux Kernel에서 제공하는 기능
프로세스 그룹에 대한 리소스 제한(Limit), 격리(Isolation), 모니터링
(CPU, Memory, Storage, Network I/O)
2006년 9월 부터 ‘Process Container’로 개발시작
2007년 단어의 모호함때문에 cgroups 로 이름변경
2008년 1월 Linux Kernel 2.6.24에 적용
추천링크:
Introduction to Linux Control Groups (Cgroups)
https://sysadmincasts.com/episodes/14-introduction-to-linux-control-
groups-cgroups
19. 『Namespaces』
시스템 자원을 Process 레벨에서 격리화
Mount namespaces
UTS namespaces
IPC namespaces
PID namespaces
Net namespaces
User namespaces
추천링크:
Namespaces in operation, part 1: namespaces overview
http://lwn.net/Articles/531114/
20. 『Namespaces』
Image.
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
21. 『Namespaces』
Image.
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
22. 『Namespaces』
Image.
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
23. 『Namespaces』
Image.
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
24. 『Namespaces』
Image.
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
25. 『Namespaces』
Image.
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
26. 『Namespaces』
Image.
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
28. 『Layer / FileSystem』
• 겹쳐서 쌓아올린 레이어 구조.
(포토샵의 Layer 같은?)
• 각각의 모든 레이어는 read-only.
• 최상단의 Container만 read-write.
• 하단 레이어에 속한 파일이 변경되면,
최상단의 Container로 복사해서 수정 적용
• 각각의 이미지는 바로 아래에 Parent Image를 가짐
• Base Image는 Parent Image가 없음.
Image. http://docs.docker.com/terms/layer/
37. 『변화의 시작?』
• 소프트웨어+실행환경의 변화
• 배포(SW+런타임) 방식의 변화
• 자동화된 제조라인에서 만들어진 제품을
간단히 배송받고 콘센트에 꽂으면 동작.
• DockerFile 을 통해 자동 생성되는 이미지를
Push, Pull로 전달(이동)
docker run을 통해 간단하게 동작!
38. 『앞으로?』
• Java 는 JVM을 이용해서
Write Once,
Run Anywhere
하지만.. 실패..
• Docker는
Build, Ship and Run
Any App, Anywhere
한번.. 믿어볼만함?
39. 『참고자료』
• What is Docker?
https://www.docker.com/whatisdocker/
• DOCKER 0.9: INTRODUCING EXECUTION DRIVERS AND LIBCONTAINER
http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer
• LXC - Linux Containers
https://linuxcontainers.org/
• chroot
http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7
• Episode #14 - Introduction to Linux Control Groups (Cgroups)
https://sysadmincasts.com/episodes/14-introduction-to-linux-control-groups-cgroups
• Namespaces in operation, part 1: namespaces overview
http://lwn.net/Articles/531114
• Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
• Docker Layers
http://docs.docker.com/terms/layer/