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

Docker at Deview 2013

Jun 02, 2015

Download

Documents

Jude Kim

docker presentation at Deview 2013 at Korea
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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일 화요일