docker.소개.30 m
DESCRIPTION
Docker.소개.30M Docker 간단한 소개 30분TRANSCRIPT
시작하기전에
간단한 용어 소개를 먼저
『가상화』
『Hypervisor』
『가상화』
wikipedia 에서는 다음과 같이 정의
컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어
물리적인 컴퓨터 리소스의 특징을다른 시스템, 응용 프로그램, 최종 사용자들이리소스와 상호 작용하는 방식으로부터 감추는 기술
어렵고 복잡해~@.@
(그림으로 예를 들어보면)
『가상화』 기술의 예
서버
OS
Oracle
서버
OS
Oracle
가상화기술
OS
Tomcat
OS
MySQL
쉽게(?) 볼 수 있는 ‘서버 가상화’일반서버
『Hypervisor』
wikipedia 에서는 다음과 같이 정의
호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼(platform)
Hypervisor 는 VMM(Virtual Machine Monitor)으로도 불림.
(이것도 그림으로 보면..)
『Hypervisor』 2가지 형태
Hardware
Hypervisor
GuestOS
Type-I (Bare-metal)
Oracle
GuestOS
Oracle
Hardware
Hypervisor
GuestOS
Oracle
GuestOS
Tomcat
Hosted OS
Type-II (Hosted)
Docker 소개 시작!
앞에서 VM에 대한 이야기는 왜 했을까?
Docker는..
VM과 비슷해보이지만 다름! 그리고 VM과는 그 '의도'가 다름
그렇다면.. Docker란?
Docker
Docker는..(고래 등짝에 올려진 컨테이너 박스들처럼)프로그램과 실행에 필요한것들을 박스(?)로 포장하고,포장된 박스(?)를 손쉽게 이동해서,어디서나 간단하게 실행할 수 있는
도구와 환경을 제공하는 오픈소스 플랫폼.
Write Once,Run Anywhere
Build, Ship and RunAny App, Anywhere
Docker와 VM 다른점 『구조』
Hypervisor의 자리를 Docker Engine이 대체VM과는 다르게 (형태를 갖춘) GuestOS를 가지지 않음
Image. https://www.docker.com/whatisdocker/
Docker와 VM 다른점 『활용』
기존의 VM은 가상화를 통해 격리된 실행 환경을 만들었다면
Docker 또한 격리된 실행 환경을 제공하지만이와함께 Packaging(포장), Delivery(전달)등통합적인 환경을 제공.
(다음장에서 간단한 그림으로 확인)
Docker Flow 요약Docker
Repositories
myServer Docker
Repositories
Server 1
Docker Engine
Server 2
Docker Engine
Server 3
Docker Engine
docker push myid:1.0
docker push myserver.com:5000/myid:0.3
docker pull myid:1.0
docker pull myserver.com:5000/myid:0.3
Dockerfile
docker build
Docker Repositories 종류
Docker Repositories <PUBLIC>
myServer Docker
Repositories
Docker Repositories <PRIVATE>
registry 서버 설치
Official Repositories
일반 User
vendors/contributors
http://registry.hub.dock
er.comhttps://registry.hub.docker.com/repos/
그렇다면 Docker의 장점은?
VM대비 상대적으로 적은 Overhead(CPU, Memory, Storage)
실행가능한 모든 프로그램을 패키징 가능간편한 이미지 관리(create, push, pull) 생성된 이미지는 어디서나 실행가능
Linux에서 실행가능한 프로그램이라면패키징 작업 및어떠한 Linux 환경으로도 이동 및 실행 가능.
Docker가 사용하는 기술
Image. http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer
『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 pagehttps://linuxcontainers.org/
『chroot』 - Change Root시스템의 root 구성을임의로 구성한 위치로 binding
Image. http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7
『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
『Namespaces』시스템 자원을 Process 레벨에서 격리화
Mount namespaces UTS namespacesIPC namespacesPID namespacesNet namespaces User namespaces
추천링크: Namespaces in operation, part 1: namespaces overviewhttp://lwn.net/Articles/531114/
『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
『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
『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
『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
『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
『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
『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
Docker는 다중 LayerFileSystem을 사용
『Layer / FileSystem』• 겹쳐서 쌓아올린 레이어 구조.
(포토샵의 Layer 같은?)
• 각각의 모든 레이어는 read-only.
• 최상단의 Container만 read-write.
• 하단 레이어에 속한 파일이 변경되면, 최상단의 Container로 복사해서 수정 적용
• 각각의 이미지는 바로 아래에 Parent Image를 가짐
• Base Image는 Parent Image가 없음.
Image. http://docs.docker.com/terms/layer/
예제를 통해 Docker 좀더 알기
간단한 Ubuntu Image 다운로드
간단한 Ubuntu 실행
Ubuntu 12.04 실행 확인!!!
Image는 다중 Layer로 구성
ubuntu 12.04를 받았지만(pull) Layer 된 하위 Image가 함께 받아졌음
변경분에 대한 조회가 가능
server.txt 파일을 신규 생성하고 diff 옵션을 사용하면 추가된(A) 정보 확인가능
변경분을 Image로 생성
Container의 변경사항을 Image로 생성 가능 commit!!
기존 Image와 비교
기존 Image와 비교
『변화의 시작?』
• 소프트웨어+실행환경의 변화
• 배포(SW+런타임) 방식의 변화
• 자동화된 제조라인에서 만들어진 제품을간단히 배송받고 콘센트에 꽂으면 동작.
• DockerFile 을 통해 자동 생성되는 이미지를Push, Pull로 전달(이동)docker run을 통해 간단하게 동작!
『앞으로?』
• Java 는 JVM을 이용해서Write Once,Run Anywhere하지만.. 실패..
• Docker는Build, Ship and RunAny App, Anywhere한번.. 믿어볼만함?
• 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 Containershttps://linuxcontainers.org/
• chroothttp://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 overviewhttp://lwn.net/Articles/531114
• Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentationshttp://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
• Docker Layershttp://docs.docker.com/terms/layer/
『참고자료』