docker.소개.30 m

39
Docker 소개 30M [email protected]

Upload: wonchang-song

Post on 07-Jul-2015

3.304 views

Category:

Technology


0 download

DESCRIPTION

Docker.소개.30M Docker 간단한 소개 30분

TRANSCRIPT

Page 2: Docker.소개.30 m

시작하기전에

간단한 용어 소개를 먼저

『가상화』

『Hypervisor』

Page 3: Docker.소개.30 m

『가상화』

wikipedia 에서는 다음과 같이 정의

컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어

물리적인 컴퓨터 리소스의 특징을다른 시스템, 응용 프로그램, 최종 사용자들이리소스와 상호 작용하는 방식으로부터 감추는 기술

어렵고 복잡해~@.@

(그림으로 예를 들어보면)

Page 4: Docker.소개.30 m

『가상화』 기술의 예

서버

OS

Oracle

서버

OS

Oracle

가상화기술

OS

Tomcat

OS

MySQL

쉽게(?) 볼 수 있는 ‘서버 가상화’일반서버

Page 5: Docker.소개.30 m

『Hypervisor』

wikipedia 에서는 다음과 같이 정의

호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼(platform)

Hypervisor 는 VMM(Virtual Machine Monitor)으로도 불림.

(이것도 그림으로 보면..)

Page 6: Docker.소개.30 m

『Hypervisor』 2가지 형태

Hardware

Hypervisor

GuestOS

Type-I (Bare-metal)

Oracle

GuestOS

Oracle

Hardware

Hypervisor

GuestOS

Oracle

GuestOS

Tomcat

Hosted OS

Type-II (Hosted)

Page 7: Docker.소개.30 m

Docker 소개 시작!

앞에서 VM에 대한 이야기는 왜 했을까?

Docker는..

VM과 비슷해보이지만 다름! 그리고 VM과는 그 '의도'가 다름

Page 8: Docker.소개.30 m

그렇다면.. Docker란?

Docker

Page 9: Docker.소개.30 m

Docker는..(고래 등짝에 올려진 컨테이너 박스들처럼)프로그램과 실행에 필요한것들을 박스(?)로 포장하고,포장된 박스(?)를 손쉽게 이동해서,어디서나 간단하게 실행할 수 있는

도구와 환경을 제공하는 오픈소스 플랫폼.

Write Once,Run Anywhere

Build, Ship and RunAny App, Anywhere

Page 10: Docker.소개.30 m

Docker와 VM 다른점 『구조』

Hypervisor의 자리를 Docker Engine이 대체VM과는 다르게 (형태를 갖춘) GuestOS를 가지지 않음

Image. https://www.docker.com/whatisdocker/

Page 11: Docker.소개.30 m

Docker와 VM 다른점 『활용』

기존의 VM은 가상화를 통해 격리된 실행 환경을 만들었다면

Docker 또한 격리된 실행 환경을 제공하지만이와함께 Packaging(포장), Delivery(전달)등통합적인 환경을 제공.

(다음장에서 간단한 그림으로 확인)

Page 12: Docker.소개.30 m

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

Page 13: Docker.소개.30 m

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/

Page 14: Docker.소개.30 m

그렇다면 Docker의 장점은?

VM대비 상대적으로 적은 Overhead(CPU, Memory, Storage)

실행가능한 모든 프로그램을 패키징 가능간편한 이미지 관리(create, push, pull) 생성된 이미지는 어디서나 실행가능

Linux에서 실행가능한 프로그램이라면패키징 작업 및어떠한 Linux 환경으로도 이동 및 실행 가능.

Page 15: Docker.소개.30 m

Docker가 사용하는 기술

Image. http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer

Page 16: Docker.소개.30 m

『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/

Page 17: Docker.소개.30 m

『chroot』 - Change Root시스템의 root 구성을임의로 구성한 위치로 binding

Image. http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7

Page 18: Docker.소개.30 m

『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

Page 19: Docker.소개.30 m

『Namespaces』시스템 자원을 Process 레벨에서 격리화

Mount namespaces UTS namespacesIPC namespacesPID namespacesNet namespaces User namespaces

추천링크: Namespaces in operation, part 1: namespaces overviewhttp://lwn.net/Articles/531114/

Page 20: Docker.소개.30 m

『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

Page 21: Docker.소개.30 m

『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

Page 22: Docker.소개.30 m

『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

Page 23: Docker.소개.30 m

『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

Page 24: Docker.소개.30 m

『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

Page 25: Docker.소개.30 m

『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

Page 26: Docker.소개.30 m

『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

Page 27: Docker.소개.30 m

Docker는 다중 LayerFileSystem을 사용

Page 28: Docker.소개.30 m

『Layer / FileSystem』• 겹쳐서 쌓아올린 레이어 구조.

(포토샵의 Layer 같은?)

• 각각의 모든 레이어는 read-only.

• 최상단의 Container만 read-write.

• 하단 레이어에 속한 파일이 변경되면, 최상단의 Container로 복사해서 수정 적용

• 각각의 이미지는 바로 아래에 Parent Image를 가짐

• Base Image는 Parent Image가 없음.

Image. http://docs.docker.com/terms/layer/

Page 29: Docker.소개.30 m

예제를 통해 Docker 좀더 알기

Page 30: Docker.소개.30 m

간단한 Ubuntu Image 다운로드

Page 31: Docker.소개.30 m

간단한 Ubuntu 실행

Ubuntu 12.04 실행 확인!!!

Page 32: Docker.소개.30 m

Image는 다중 Layer로 구성

ubuntu 12.04를 받았지만(pull) Layer 된 하위 Image가 함께 받아졌음

Page 33: Docker.소개.30 m

변경분에 대한 조회가 가능

server.txt 파일을 신규 생성하고 diff 옵션을 사용하면 추가된(A) 정보 확인가능

Page 34: Docker.소개.30 m

변경분을 Image로 생성

Container의 변경사항을 Image로 생성 가능 commit!!

Page 35: Docker.소개.30 m

기존 Image와 비교

Page 36: Docker.소개.30 m

기존 Image와 비교

Page 37: Docker.소개.30 m

『변화의 시작?』

• 소프트웨어+실행환경의 변화

• 배포(SW+런타임) 방식의 변화

• 자동화된 제조라인에서 만들어진 제품을간단히 배송받고 콘센트에 꽂으면 동작.

• DockerFile 을 통해 자동 생성되는 이미지를Push, Pull로 전달(이동)docker run을 통해 간단하게 동작!

Page 38: Docker.소개.30 m

『앞으로?』

• Java 는 JVM을 이용해서Write Once,Run Anywhere하지만.. 실패..

• Docker는Build, Ship and RunAny App, Anywhere한번.. 믿어볼만함?

Page 39: Docker.소개.30 m

• 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/

『참고자료』