169
docker lightweight linux container in Deview 2013 1 judekim ( baas.io developer - KT ) 131015화요일

Docker at Deview 2013

Embed Size (px)

DESCRIPTION

docker presentation at Deview 2013 at Korea

Citation preview

Page 1: Docker at Deview 2013

dockerlightweight linux container

in Deview 2013

1

judekim ( baas.io developer - KT )

13년 10월 15일 화요일

Page 2: Docker at Deview 2013

speaker

2

김영찬 ( @modestjude )http://judekim.tistory.com

* PHP/Java developer* baas.io in KT* KPNS ( Push Notification )

Previously* KTH

13년 10월 15일 화요일

Page 3: Docker at Deview 2013

Index• about docker

• why docker?

• inside docker

• demo

• docker use cases

• limitations

• epilogue

3

13년 10월 15일 화요일

Page 4: Docker at Deview 2013

• why docker?

• inside docker

• demo

• docker use cases

• limitations

• epilogue

about docker

13년 10월 15일 화요일

Page 5: Docker at Deview 2013

docker [dɒkəә] 부두노동자

13년 10월 15일 화요일

Page 6: Docker at Deview 2013

docker [dɒkəә] 부두노동자

13년 10월 15일 화요일

Page 7: Docker at Deview 2013

• docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.

6

13년 10월 15일 화요일

Page 8: Docker at Deview 2013

• docker는 거의 어디에서나 실행되는 경량이면서 portable하고, 자급자족인 컨테이너 응용 프로그램의 배포를 자동화하는 오픈소스 엔진입니다.

7

13년 10월 15일 화요일

Page 9: Docker at Deview 2013

• docker는 거의 어디에서나 실행되는 경량이면서 portable하고, 자급자족인 컨테이너 응용 프로그램의 배포를 자동화하는 오픈소스 엔진입니다.

7

what??

13년 10월 15일 화요일

Page 10: Docker at Deview 2013

그냥 한번 해보자!

8

13년 10월 15일 화요일

Page 11: Docker at Deview 2013

• git clone https://github.com/dotcloud/docker.git

• vagrant up (http://www.vagrantup.com)- Ubuntu64bit package box download- boot using virtualbox- docker install ( lxc-docker )

• vagrant ssh

9

13년 10월 15일 화요일

Page 12: Docker at Deview 2013

10

run CentOS6.4 in Ubuntu

http://youtu.be/xL9e8YaugSY

13년 10월 15일 화요일

Page 13: Docker at Deview 2013

hello world

11

http://youtu.be/w4jfLy633xM

13년 10월 15일 화요일

Page 14: Docker at Deview 2013

• dotCloud 내부 프로젝트로 시작 (2013.01)

• python -> go

• docker는 현재 다음 기술들로 구현됨 LinuX ContainersControl Groups & NamespacesAUFS

12

docker

13년 10월 15일 화요일

Page 15: Docker at Deview 2013

• like git

13

vagrant@precise64:~$ Pulling repository centos539c0211cd76: Downloading 61.8 MB/98.56 MB (63%)

~/workspace/usergrid-stack-origin:~$remote: Counting objects: 291, done.remote: Compressing objects: 100% (121/121), done.remote: Total 210 (delta 79), reused 170 (delta 42)Receiving objects: 100% (210/210), 48.34 KiB, done.Resolving deltas: 100% (79/79), completed with 38 local objects.From github.com:apigee/usergrid-stack

sudo docker pull centos:6.4

git pull origin master

13년 10월 15일 화요일

Page 16: Docker at Deview 2013

• like git

13

vagrant@precise64:~$ Pulling repository centos539c0211cd76: Downloading 61.8 MB/98.56 MB (63%)

~/workspace/usergrid-stack-origin:~$remote: Counting objects: 291, done.remote: Compressing objects: 100% (121/121), done.remote: Total 210 (delta 79), reused 170 (delta 42)Receiving objects: 100% (210/210), 48.34 KiB, done.Resolving deltas: 100% (79/79), completed with 38 local objects.From github.com:apigee/usergrid-stack

sudo docker pull centos:6.4

git pull origin master

13년 10월 15일 화요일

Page 17: Docker at Deview 2013

• like git

13

vagrant@precise64:~$ Pulling repository centos539c0211cd76: Downloading 61.8 MB/98.56 MB (63%)

~/workspace/usergrid-stack-origin:~$remote: Counting objects: 291, done.remote: Compressing objects: 100% (121/121), done.remote: Total 210 (delta 79), reused 170 (delta 42)Receiving objects: 100% (210/210), 48.34 KiB, done.Resolving deltas: 100% (79/79), completed with 38 local objects.From github.com:apigee/usergrid-stack

sudo docker pull centos:6.4

git pull origin master

13년 10월 15일 화요일

Page 18: Docker at Deview 2013

• about docker

• inside docker

• demo

• docker use cases

• limitations

• epilogue

why docker

13년 10월 15일 화요일

Page 19: Docker at Deview 2013

Evolution of IT

13년 10월 15일 화요일

Page 20: Docker at Deview 2013

The challenge

13년 10월 15일 화요일

Page 21: Docker at Deview 2013

NxM Matrix

13년 10월 15일 화요일

Page 22: Docker at Deview 2013

NxM Matrix

Dependency hell!!

13년 10월 15일 화요일

Page 23: Docker at Deview 2013

비슷한 사례가 없었을까?

13년 10월 15일 화요일

Page 24: Docker at Deview 2013

1960년 이전의 화물운송

13년 10월 15일 화요일

Page 25: Docker at Deview 2013

마찬가지로 NxM Matrix

13년 10월 15일 화요일

Page 26: Docker at Deview 2013

마찬가지로 NxM Matrix

Also hell!!

13년 10월 15일 화요일

Page 27: Docker at Deview 2013

그럼 어떻게 해결했을까?

13년 10월 15일 화요일

Page 28: Docker at Deview 2013

화물 운송의 해결책은?

13년 10월 15일 화요일

Page 29: Docker at Deview 2013

NxM 문제가 해결되었다!

13년 10월 15일 화요일

Page 30: Docker at Deview 2013

container로 만들어진 에코시스템

13년 10월 15일 화요일

Page 31: Docker at Deview 2013

그렇다면 우리의 해결책은?

13년 10월 15일 화요일

Page 32: Docker at Deview 2013

리눅스에도 container가 있었다..

13년 10월 15일 화요일

Page 33: Docker at Deview 2013

리눅스에도 container가 있었다..

단언컨대 container는..

13년 10월 15일 화요일

Page 34: Docker at Deview 2013

리눅스에도 container가 있었다..

13년 10월 15일 화요일

Page 35: Docker at Deview 2013

docker는 코드를 위한 container 운송시스템이다

13년 10월 15일 화요일

Page 36: Docker at Deview 2013

docker는 상황을 더 단순하게 만듭니다.

13년 10월 15일 화요일

Page 37: Docker at Deview 2013

docker는 상황을 더 단순하게 만듭니다.

13년 10월 15일 화요일

Page 38: Docker at Deview 2013

• 나의 container 내(in)에 있는 것들에 대해서...

• my code

• my libraries

• my package manager

• my app

• my data

개발자의 관심

13년 10월 15일 화요일

Page 39: Docker at Deview 2013

build once and run anywhere

( for developers )

13년 10월 15일 화요일

Page 40: Docker at Deview 2013

• container 밖의 것들에 대해서...

• logging

• remote access

• network configuration

• monitoring

시스템 운영자의 관심

13년 10월 15일 화요일

Page 41: Docker at Deview 2013

configure once run anything ( by devops )

13년 10월 15일 화요일

Page 42: Docker at Deview 2013

Linux containers• run everywhere

• 커널 버전과 관계없이

• Host 배포판과 관계없이

• run anything

• Host에서 동작한다면 container에서도 동작한다.

• 즉, 리눅스 커널에서 동작한다면 가능하다.

13년 10월 15일 화요일

Page 43: Docker at Deview 2013

docker는 마찬가지로 (linux)contianer를 사용하여 NxM 문제를 해결했습니다.

13년 10월 15일 화요일

Page 44: Docker at Deview 2013

• docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient that will run virtually anywhere.

13년 10월 15일 화요일

Page 45: Docker at Deview 2013

• docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient that will run virtually anywhere.

container

13년 10월 15일 화요일

Page 46: Docker at Deview 2013

• about docker

• why docker

• demo

• docker use cases

• limitations

• epilogue

inside docker

13년 10월 15일 화요일

Page 47: Docker at Deview 2013

Linux containers란 무엇인가?

• own process space

• own network interface

• can run stuff as root

• can have its own /sbin/init(different from the host)

13년 10월 15일 화요일

Page 48: Docker at Deview 2013

Linux containers란 무엇인가?

• own process space

• own network interface

• can run stuff as root

• can have its own /sbin/init(different from the host)

그것은 경량화된 VM이다.

13년 10월 15일 화요일

Page 49: Docker at Deview 2013

Linux containers란 무엇인가?

• own process space

• own network interface

• can run stuff as root

• can have its own /sbin/init(different from the host)

[Machine Container]

그것은 경량화된 VM이다.

13년 10월 15일 화요일

Page 50: Docker at Deview 2013

Linux containers란 무엇인가?

• can also not have its own /sbin/init

• container = isolated process(es)

• share kernel with host

• no device emulation(neither HVM nor PV)

13년 10월 15일 화요일

Page 51: Docker at Deview 2013

Linux containers란 무엇인가?

• can also not have its own /sbin/init

• container = isolated process(es)

• share kernel with host

• no device emulation(neither HVM nor PV)

스팀팩 맞은 chroot

13년 10월 15일 화요일

Page 52: Docker at Deview 2013

Linux containers란 무엇인가?

• can also not have its own /sbin/init

• container = isolated process(es)

• share kernel with host

• no device emulation(neither HVM nor PV)

[Application Container]

스팀팩 맞은 chroot

13년 10월 15일 화요일

Page 53: Docker at Deview 2013

containers vs VMs ( Hypervisor Type2 )

• VM runs on(above) the host operating system as a full fledged OS and uses isolated process spaces.( virtualbox, VMware, Parallels Desktop ... )

• Docker runs with host operating system as its share the host process spaces.

13년 10월 15일 화요일

Page 54: Docker at Deview 2013

containers이어야 하는 이유• speed : boots in seconds

• footprint : 100-1,000 containers on one machine.

13년 10월 15일 화요일

Page 55: Docker at Deview 2013

containers vs VMs

13년 10월 15일 화요일

Page 56: Docker at Deview 2013

docker 경량화의 비법델타 Δ

13년 10월 15일 화요일

Page 57: Docker at Deview 2013

docker container 기본 flow

build

push

search pullrun

13년 10월 15일 화요일

Page 58: Docker at Deview 2013

application 의 업데이트도 간단

13년 10월 15일 화요일

Page 59: Docker at Deview 2013

그럼 어떻게 docker가 이렇게 동작할까요?

13년 10월 15일 화요일

Page 60: Docker at Deview 2013

LinuX Container ( LXC )

• 또 다른 리눅스 시스템에서 리눅스 시스템을 구동

• container는 리눅스 박스내의 process 그룹

• container 안에서는 VM처럼 보임

• container 밖에서는 process 처럼 보임

• 스팀팩 맞은 chroot

46

13년 10월 15일 화요일

Page 61: Docker at Deview 2013

outside (host) > ps -ax

47

13년 10월 15일 화요일

Page 62: Docker at Deview 2013

outside (host) > ps -ax

47

13년 10월 15일 화요일

Page 63: Docker at Deview 2013

outside (host) > ps -ax

47

13년 10월 15일 화요일

Page 64: Docker at Deview 2013

outside (host) > ps -ax

47

13년 10월 15일 화요일

Page 65: Docker at Deview 2013

outside (host) > ps -ax

47

13년 10월 15일 화요일

Page 66: Docker at Deview 2013

Isolation with namespaces

48

• pid ( processes )

• net ( network interfaces, routing ... )

• ipc ( System V IPC )

• mnt ( mount points, filesystems )

• uts ( hostname )

• user ( UIDs )

13년 10월 15일 화요일

Page 67: Docker at Deview 2013

Isolation with cgroups• memory

• cpu

• block I/O : not perfect

• devices

49

13년 10월 15일 화요일

Page 68: Docker at Deview 2013

AUFS ( Advanced multi layered Unification FileSystem )

• layered 파일 시스템

• 최상위 layer만 읽기 쓰기가 가능한 layer로 설정되어 있음 ( container )

• rootfs(루트파일시스템)에 있는 내용을 수정할 수 있으나, 수정한 내용은 rw 디렉토리로 이동된다.

50

13년 10월 15일 화요일

Page 69: Docker at Deview 2013

more union file systemin docker

13년 10월 15일 화요일

Page 70: Docker at Deview 2013

- bootfs- rootfs

File system

52

13년 10월 15일 화요일

Page 71: Docker at Deview 2013

bootfs• bootloader

• kernel

• 유저들은 여기에 어떤 수정도 할 수 없다.

53

13년 10월 15일 화요일

Page 72: Docker at Deview 2013

rootfs

• 일반적인 디렉토리를 포함한다. ( /dev, /bin, /etc )

• 환경설정 및 실행파일 그리고 라이브러리파일들이 rootfs에 있다. ( like bash, ls ... )

54

13년 10월 15일 화요일

Page 73: Docker at Deview 2013

- 전통적인 linux 부팅 순서 . rootfs를 읽기 전용으로 마운트 . rootfs 무결성 검사 . rootfs를 읽기쓰기 모드로 변경- docker 는 오직 rootfs를 읽기 전용으로 마운트 한다. 대신 읽기쓰기가 가능한 레이어를 추가한다. ( it's )

Layer

55

13년 10월 15일 화요일

Page 74: Docker at Deview 2013

- 전통적인 linux 부팅 순서 . rootfs를 읽기 전용으로 마운트 . rootfs 무결성 검사 . rootfs를 읽기쓰기 모드로 변경- docker 는 오직 rootfs를 읽기 전용으로 마운트 한다. 대신 읽기쓰기가 가능한 레이어를 추가한다. ( it's )

Layer

55

container

13년 10월 15일 화요일

Page 75: Docker at Deview 2013

- 읽기 전용 레이어 image로 부름- image는 상태를 가질 수 없음- 부모 image가 없는 image를 base image라고 함 ( e.g. Debian )

Image

56

13년 10월 15일 화요일

Page 76: Docker at Deview 2013

- 읽기쓰기가 가능한 레이어- 최상위 레이어- 상태를 가질 수 있음- container를 docker의 commit 명령어를 통해 이미지로 만들수도 있으며 만든 이미지를 다시 parent image로 사용할 수 있음. 즉 재사용할 수 있음.

Container

57

13년 10월 15일 화요일

Page 77: Docker at Deview 2013

58

Look down

13년 10월 15일 화요일

Page 78: Docker at Deview 2013

59

Union file system• 일반적으로 리눅스에서는 디렉토리 하나에 하나의 파일시스템만 마운트하는게 대부분.

• 만일 동일한 디렉토리에 둘 이상의 파일 시스템을 마운트하면 항상 마지막에 마운트한 파일 시스템 내용만 보여 이전에 마운트한 파일 시스템 내용은 접근이 불가능.

• 병합(union)마운트란 하나의 디렉토리에 여러 파일시스템을 마운트 하여 여러 파일 시스템 내용이 합쳐지는 것을 의미.

• 나중 마운트한 파일이 우선시 됨. 만일 writable mount가 되었다면 마운트 파일을 지웠을때, 그 정보도 유지됨.

13년 10월 15일 화요일

Page 79: Docker at Deview 2013

60

Demo union file system in docker

http://youtu.be/uHLs5ljV20U

13년 10월 15일 화요일

Page 80: Docker at Deview 2013

60

http://youtu.be/uHLs5ljV20U

13년 10월 15일 화요일

Page 81: Docker at Deview 2013

좀전에 ubuntu image에서 /tmp/test2파일을 추가한것은

container의 rootfs에서는 확인이 되나,

rw 에서는 확인이 되지 않습니다.

61

13년 10월 15일 화요일

Page 82: Docker at Deview 2013

rootfs는 image를 모두 가지고 있고, 그 위에 변화하는 값까지 가지고 있으나,

rw는 image대비 변화값(Δ델타)만을 가지고 있기 때문입니다.

62

13년 10월 15일 화요일

Page 83: Docker at Deview 2013

이미 image에 존재하는 /tmp/test2이니 굳이 rw에서는

변화량으로 확인되지 않는 것이죠.

63

13년 10월 15일 화요일

Page 84: Docker at Deview 2013

만일 container의 rootfs디렉토리에서 파일을 생성한다면 rw디렉토리에 기록될까요?

64

13년 10월 15일 화요일

Page 85: Docker at Deview 2013

docker를 통하지 않고, 직접 데이터를 수정한 느낌인데

과연 될까요?

65

13년 10월 15일 화요일

Page 86: Docker at Deview 2013

네 기록됩니다. docker가 하는것이 아닌

union file filesystem 고유의 기능에 의한 것이니까요.

66

13년 10월 15일 화요일

Page 87: Docker at Deview 2013

docker는 단지 파일시스템의 마운트 룰셋만 정의 및 관리하고,

직접적인 파일 핸들링은 AUFS가 합니다.

67

13년 10월 15일 화요일

Page 88: Docker at Deview 2013

Efficiency

68

13년 10월 15일 화요일

Page 89: Docker at Deview 2013

Efficiency

68

almost no overhead

13년 10월 15일 화요일

Page 90: Docker at Deview 2013

Efficiency

68

almost no overhead

뻥치시네~

13년 10월 15일 화요일

Page 91: Docker at Deview 2013

69

• 프로세스들은 고립되어 있지만, host위에서 직접 실행된다.

• CPU performance

- native performance ( 거의 차이 없음 )

• memory performance

- a few % shaved off for (optional) accounting

• network performance

- 작은(small)의 오버헤드 발생. ( docker project 팀은 향후에 충분히 1:1에 가까운 수준으로 최적화 가능하다라고 함 )

13년 10월 15일 화요일

Page 92: Docker at Deview 2013

docker benchmarkitems method host docker

CPU sysbench 1

memory

sysbenchseq

1 (r)

memory

sysbenchseq 1 (w)memory

sysbenchrnd

1 (r)memory

sysbenchrnd 1 (w)

disk dd 1

network iperf 1

13년 10월 15일 화요일

Page 93: Docker at Deview 2013

docker benchmarkitems method host docker

CPU sysbench 1

memory

sysbenchseq

1 (r)

memory

sysbenchseq 1 (w)memory

sysbenchrnd

1 (r)memory

sysbenchrnd 1 (w)

disk dd 1

network iperf 1

0.9931

0.99990.97591.00560.98070.9716

13년 10월 15일 화요일

Page 94: Docker at Deview 2013

docker benchmarkitems method host docker

CPU sysbench 1

memory

sysbenchseq

1 (r)

memory

sysbenchseq 1 (w)memory

sysbenchrnd

1 (r)memory

sysbenchrnd 1 (w)

disk dd 1

network iperf 1

0.9931

0.99990.97591.00560.98070.9716

0.7889

13년 10월 15일 화요일

Page 95: Docker at Deview 2013

• about docker

• why docker

• inside docker

• docker use cases

• limitations

• epilogue

demo

13년 10월 15일 화요일

Page 96: Docker at Deview 2013

hipache + nginx with php5

https://github.com/dotcloud/hipache

72

13년 10월 15일 화요일

Page 97: Docker at Deview 2013

시나리오

73

13년 10월 15일 화요일

Page 98: Docker at Deview 2013

1. php + nginx로 구현된 web application 서버들을 hipache를 통해 로드밸런싱 구현

2. web application 수정 및 deploy

74

13년 10월 15일 화요일

Page 99: Docker at Deview 2013

75

hipache

web 1 web 2

8001 8002

80

80

80 80

13년 10월 15일 화요일

Page 100: Docker at Deview 2013

75

hipache

web 1 web 2 web 3v.0.3

8001 8002

80

80

80 80

8003

80

copy & modify

13년 10월 15일 화요일

Page 101: Docker at Deview 2013

75

hipache

web 1 web 2 web 3v.0.3

8001 8002

80

80

80 80

8003

80

copy & modify

13년 10월 15일 화요일

Page 102: Docker at Deview 2013

로드밸런싱 => hipache 사용

76

• git clone https://github.com/dotcloud/hipache.git

• sudo docker build -t dotcloud/hipache .

13년 10월 15일 화요일

Page 103: Docker at Deview 2013

nginx + php5• git clone https://github.com/darron/docker-

nginx-php5.git

• 간단히 Dockerfile을 수정한다.

• RUN echo "<?php echo sprintf( \"Hello world2 - (%s)\", \$_SERVER['SERVER_ADDR']); ?>" > /var/www/index.php

• sudo docker build -t judekim/nginx-php5 .

77

13년 10월 15일 화요일

Page 104: Docker at Deview 2013

demo

78

http://youtu.be/xC-2b7iGBno

13년 10월 15일 화요일

Page 105: Docker at Deview 2013

• about docker

• why docker

• inside docker

• demo

• limitations

• epilogue

docker use cases

13년 10월 15일 화요일

Page 106: Docker at Deview 2013

• testing

• build your own PaaS

• web based environment for instruction

• easy application deployment

• create secure sandboxes

• create your own SaaS

• automated application deployment

• continuous integration and deployment : travis

• lightweight desktop virtualization

80

13년 10월 15일 화요일

Page 107: Docker at Deview 2013

Testing

81

13년 10월 15일 화요일

Page 108: Docker at Deview 2013

유닛 테스팅

82

• 자신의 환경과 테스트를 분리하기 위해 컨테이너를 사용

• 테스트후에 data등을 정리 하기 위해 더이상 신경쓰지 않아도 됨

• 다중 머신에 걸친 테스트도 문제 없음

13년 10월 15일 화요일

Page 109: Docker at Deview 2013

시스템 테스팅• 쉽게 테스트와 다른 시스템 환경설정을 만들수 있음

• 테스트서버가 끊기거나 재구축에 대해서 더이상 걱정할 필요 없음

• 사용예 : Test Fabric script(http://agiliq.com/blog/2013/06/self-testing-fabfile-using-docker/)

83

13년 10월 15일 화요일

Page 110: Docker at Deview 2013

Continuous integration• 개별 소스 커밋에 대해서 유닛 테스트를 할 수 있음

• StriderCD.com - Open source CI server

• deploy전에 docker 컨테이너를 통해 CI test를 수행

• TravisCI docker를 활용하고 있음

84

13년 10월 15일 화요일

Page 111: Docker at Deview 2013

Continuous integration• 개별 소스 커밋에 대해서 유닛 테스트를 할 수 있음

• StriderCD.com - Open source CI server

• deploy전에 docker 컨테이너를 통해 CI test를 수행

• TravisCI docker를 활용하고 있음

84

13년 10월 15일 화요일

Page 112: Docker at Deview 2013

Deployment

85

13년 10월 15일 화요일

Page 113: Docker at Deview 2013

86

13년 10월 15일 화요일

Page 114: Docker at Deview 2013

86

개발

13년 10월 15일 화요일

Page 115: Docker at Deview 2013

86

개발 테스트

13년 10월 15일 화요일

Page 116: Docker at Deview 2013

86

개발 테스트 gitrepository

13년 10월 15일 화요일

Page 117: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

13년 10월 15일 화요일

Page 118: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

13년 10월 15일 화요일

Page 119: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

13년 10월 15일 화요일

Page 120: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

13년 10월 15일 화요일

Page 121: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

13년 10월 15일 화요일

Page 122: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

13년 10월 15일 화요일

Page 123: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

13년 10월 15일 화요일

Page 124: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

stageserver

13년 10월 15일 화요일

Page 125: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

stageserver

13년 10월 15일 화요일

Page 126: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

stageserver

13년 10월 15일 화요일

Page 127: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

stageserver

13년 10월 15일 화요일

Page 128: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

stageserver

13년 10월 15일 화요일

Page 129: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

stageserver

13년 10월 15일 화요일

Page 130: Docker at Deview 2013

86

개발 테스트 gitrepository

CIjenkins

developserver

stageserver

productionserver

13년 10월 15일 화요일

Page 131: Docker at Deview 2013

87

13년 10월 15일 화요일

Page 132: Docker at Deview 2013

87

개발

13년 10월 15일 화요일

Page 133: Docker at Deview 2013

87

개발 테스트 gitrepository

13년 10월 15일 화요일

Page 134: Docker at Deview 2013

87

개발 테스트 gitrepository

git clone and

docker build

hook

13년 10월 15일 화요일

Page 135: Docker at Deview 2013

87

개발 테스트 gitrepository

docker private registry

git clone and

docker build

CI ( test

container )

hook

test pass

13년 10월 15일 화요일

Page 136: Docker at Deview 2013

87

개발 테스트 gitrepository

developserver

docker private registry

docker pull

git clone and

docker build

CI ( test

container )

hook

test pass

13년 10월 15일 화요일

Page 137: Docker at Deview 2013

87

개발 테스트 gitrepository

developserver

stageserver

docker private registry

docker pull

git clone and

docker build

CI ( test

container )

hook

test pass

13년 10월 15일 화요일

Page 138: Docker at Deview 2013

87

개발 테스트 gitrepository

developserver

stageserver

productionserver

docker private registry

docker pull

git clone and

docker build

CI ( test

container )

hook

test pass

13년 10월 15일 화요일

Page 139: Docker at Deview 2013

87

개발 테스트 gitrepository

developserver

stageserver

productionserver

docker private registry

docker pull

git clone and

docker build

CI ( test

container )

hook

test pass

13년 10월 15일 화요일

Page 140: Docker at Deview 2013

88

환경설정을 docker container에 포함하기 때문에 어디서나 동일하게 동작합니다.

13년 10월 15일 화요일

Page 141: Docker at Deview 2013

89

codes

old way

13년 10월 15일 화요일

Page 142: Docker at Deview 2013

89

codes

13년 10월 15일 화요일

Page 143: Docker at Deview 2013

new way with docker

90

codes environment+

It’s container of docker

13년 10월 15일 화요일

Page 144: Docker at Deview 2013

91

vagrant = docker

13년 10월 15일 화요일

Page 145: Docker at Deview 2013

91

vagrant = dockerVagrantfile = Dockerfile

13년 10월 15일 화요일

Page 146: Docker at Deview 2013

91

vagrant = dockerVagrantfile = Dockerfile

vm vs container

13년 10월 15일 화요일

Page 147: Docker at Deview 2013

docker at baas.io

13년 10월 15일 화요일

Page 148: Docker at Deview 2013

pasta ( for custom code )

93

13년 10월 15일 화요일

Page 149: Docker at Deview 2013

customized node.js

94

13년 10월 15일 화요일

Page 150: Docker at Deview 2013

needs- process isolation- memory, cpu resource limitation

95

13년 10월 15일 화요일

Page 151: Docker at Deview 2013

docker on cloud ( ucloud )

96

13년 10월 15일 화요일

Page 152: Docker at Deview 2013

• about docker

• why docker

• inside docker

• demo

• docker use cases

• epiloguelimitations

13년 10월 15일 화요일

Page 153: Docker at Deview 2013

kernel dependencyin 0.6 architecture

( e.g. LXC )

98

13년 10월 15일 화요일

Page 154: Docker at Deview 2013

= only ubuntu 12.04 higher (now)

99

13년 10월 15일 화요일

Page 155: Docker at Deview 2013

new architecture is coming...

( pluggable API )

100

13년 10월 15일 화요일

Page 156: Docker at Deview 2013

그럼에도 불구하고

101

13년 10월 15일 화요일

Page 157: Docker at Deview 2013

그럼에도 불구하고

101

충분히 쓸만하다.

13년 10월 15일 화요일

Page 158: Docker at Deview 2013

• about docker

• why docker

• inside docker

• demo

• docker use cases

• limitations

epilogue

13년 10월 15일 화요일

Page 159: Docker at Deview 2013

• 2013-08-08 - 새로운 아키텍쳐 계획 발표

• 2013-08 mid - 0.6 릴리즈

• 2013-10 - 0.8 릴리즈 ( 새로운 아키텍쳐 )

• 2013-10 ~ 11 0.8 certified on RHEL, CentOS (http://blog.docker.io/2013/09/red-hat-and-docker-collaborate/)

docker 로드맵

13년 10월 15일 화요일

Page 160: Docker at Deview 2013

• docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere*.

13년 10월 15일 화요일

Page 161: Docker at Deview 2013

docker 새로운 아키텍쳐

finally anywhere!!

13년 10월 15일 화요일

Page 162: Docker at Deview 2013

• Stabilizing

• Shrink and stabilize Core

• Provide stable, pluggable API

• Expanding runtime environments

• OpenStack : announced

• Docker as various flavors of VM ( AMI, vdf, etc )

• Increase compatible kernel set

• Increase compatible Union FS set

• IaaS compatibility

• Dev/devops tools integrations

• Chef, Puppet, Vagrant, Github, Travis, Buildbot

• Various flavors of PaaS & IDE

docker v1.0

13년 10월 15일 화요일

Page 163: Docker at Deview 2013

similar to docker ( lem-kut-fee )

https://github.com/google/lmctfy

since 2013.10.02

13년 10월 15일 화요일

Page 164: Docker at Deview 2013

감사합니다.

- judekim - [email protected]

13년 10월 15일 화요일

Page 166: Docker at Deview 2013

why docker

• docker의 경우 linux container의 주요 기능에 몇몇 편리함 및 공유를 덧붙였을뿐이지 않은가? 직접 linux container를 사용해서 구현해도 되지 않을까?

13년 10월 15일 화요일

Page 167: Docker at Deview 2013

containers before docker

13년 10월 15일 화요일

Page 168: Docker at Deview 2013

containers after docker

13년 10월 15일 화요일

Page 169: Docker at Deview 2013

VM vs containers

• 서로 상호 보완 관계임

• VM은 하드웨어 리소스의 chunk를 할당하는데 가장 유용합니다.

• container는 소프트웨어 전달 단위로서 매우 가볍고 완벽하게 프로세스 수준에서 작동합니다.

13년 10월 15일 화요일