Docker osc 0508

Post on 06-Aug-2015

1.562 views 5 download

Transcript of Docker osc 0508

1

2015. 5. 8

㈜ 오픈소스컨설팅

김호진 , 박현익

Docker(with openstack)

2http://www.redbooks.ibm.com/redbooks/pdfs/sg248199.pdf

김 호 진 부장

Manager / Principal Engineer IT infrastructure services

Open Source Consulting, Inc.

PMP/AIX EXPERT/RHCE/RHCVA/OPENSTACK 

박현익 과장

Park, hyun-ikManager

Open Source Consulting, Inc.

RHCE/RHCVA 

3

ContentsContents1.1. Why Docker?

1.11.1 가상화 vs Docker

1.21.2 Docker 의 성능비교

2.2. Docker 구축

2.12.1 Docker 구축 기초

2.22.2 Docker 로 WEB 서비스 구축

3.3. Openstack 위의 Docker

3.13.1 오픈스택에 docker 를 연결

2.32.3 Docker & Java

3.23.2Openstack 위에 Docker 로 WEB 서비스 구축

4

경쟁사보다 더 빠른 서비스와 더 많은 기능이 필요

규정준수와 인프라 보안 검증이 필수적임

Why Docker?

IT CEO 비즈니스 영속성과 효율성 사이의 갈등

LINE OF BUSINESS 빠른 서비스가 필요하고 , 더 많은 기능들이 필요 어플리케이션을 추가 / 신규 / 수정이 요청되고 , 이를 위해 더 빠른 인프라 서비스를 요청인프라 / 보안 규정준수와 인프라 보안이 필수 / 한정된 예산

5

Why Docker?

Docker 가 아래것을 해결해 줄수 있다면 ?

IT 변화 / 혁신을 위한 절대적 시간이 부족하고 , 기존 legacy 인프라를 활용하는 것으로 해결이 불가능이를 극복하는 대안으로 리소스를 효율적으로 사용하면서 , 비용을 줄이는 방법 대두 Docker

빠른 비즈니스 대응개발자 생산성 증대

클라우드 같은 더 빠르고 큰 확장성

6

Why Docker?

Containers 는 새로운 기술이 아니다 .

Conatiner 는 새로운 기술이 아니며 , 인프라의 발전된 형태로 이미 대부분 사용중임 .

도커는 오픈소스 프로젝트이자 리눅스 컨테이너에 초점을 맞춘 신생업체의 이름컨테이너 (Container) 란 여러 개의 애플리케이션을 단일 호스트에서 구동하기 위한 개념대부분 cloud 환경 ( AWS,Google Cloud Platform,Azure) 에서 공식 지원

cgoups

워크로드가 필요로 하는 컴퓨트와 메모리 , 디스크 I/O 를 정의

Namespaces

워크로드를 구분하고 격리 .

7

Why Docker?

Containers 는 새로운 기술이 아니다 .

Conatiner 는 새로운 기술이 아니며 , 인프라의 발전된 형태로 이미 대부분 사용중임 .

출처 : http://www.enterprisetech.com/2014/08/18/ibm-techies-pit-Docker-kvm-bare-metal/

8

Why Docker?

Containers 는 새로운 기술이 아니다 .

Conatiner 는 새로운 기술이 아니며 , 인프라의 발전된 형태로 이미 대부분 사용중임 .

도커는 리눅스 컨테이너를 사용 ! 초기에는 LXC(LinuX Container) 를 기반으로 구현 버전 0.9 부터는 LXC 를 대신하는 libcontainer 를 개발하여 사용

실행 옵션으로 선택 가능

출처 : http://blog.Docker.com/2014/03/Docker-0-9-introducing-execution-drivers-and-libcontainer/

구글의 모든 서비스들은 컨테이서안에서 실행된다 .

구글 사내의 어플리케이션을 포함한 구글의 모든 서비스들은 모두 이 컨테이너 안에서 실행되고 있다 .

구글은 매주 20 억개 이상의 컨테이너를 기동하고 있다 .

9

Why Docker?

Docker 로 해결할 수 있는 문제

기업에서 container 기술로 해결하고자 하는 문제

애플리케이션의 빠른 이식성 / 더 빠른 애플리케이션의 완성 / 배포의 유연성 / 더 빠른 애플리케이션 자원 최적화

10

가상화와 도커의 차이

Docker 란 ?

애플리케이션과 그 실행환경을 모두 포함한 소프트웨어 패키지 Host OS 에 상관없이 배포가 쉽고 , 유연함Host OS 와 애플리케이션을 분리

virtual machine Docker

• Booting 시 수분이 걸림 ( 부팅동안 , 많은 취약점과 장애발생 소지 ) 패치하고 , 버전관리하는데 많은 노동력 집중 /hy-pervisor 와 guestOS 를 통시에 관리하고 , 보안취약점을 검증하여야 함 간단한 OS   프로세스를 위해서도 새로운 가상머신이 필요함 . ( 비실용적 ) 리소스사용량이 많음 . 

• 낮은 비용 빠른 어플리케이션 개발 보안 간편성 새로운 IT 에 적용가능 ( 하이브리드 클라우드 ) 다른 버전도 같은 이미지에서 운영가능

Linux Containers: Why They’re in Your Future and What Has to Happen First : redhat / cisco (2014.9)

11

가상화와 도커의 차이

가상화 대비 도커의 장점

애플리케이션과 그 실행환경을 모두 포함한 소프트웨어 패키지 Host OS 에 상관없이 배포가 쉽고 , 유연함Host OS 와 애플리케이션을 분리

출처 : http://www.channelinsider.com/tech-analysis/slideshows/linux-investments-looking-up-for-2015.html

* 환경구성 소요시간

12

Docker 의 성능비교

CPU/MEMORY 성능

A. CPU –PXZ 툴로 data 압축을 통해 cpu 부하를 주면 , bare metal 과 Docker 는 비슷하지만 , kvm 은 22% 정도 성능 저하가 옴 .

B. HPC—Linpack 툴로 연산부하도 역시 비슷한 결과치를 냈으나 , kvm 을 tune 할 경우 차이가 그리 크지 않음 .

C. Memory bandwidth—Stream – 메모리 관련하여서는 streaming 테스트 시 크게 차이가 나지 않음 .

D. Random Memory Access—RandomAccess – 메모리 관련하여서는 랜덤 억세스 시 크게 차이가 나지 않음 .

출처 : http://blog.Docker.com/2014/03/Docker-0-9-introducing-execution-drivers-and-libcontainer/

13

Docker 의 성능비교

Network 성능

E. Network bandwidth—nuttcp

실제 도커의 경우 NAT 를 사용하면 , 성능저하가 발생하였으나 , kvm 보다는 더 좋은 성능을 나타내었다 .

이 경우 , nat overhead 를 줄이기 위해서는 – net=host option 을 줄경우 baremetal 과 거의 동일한 성능을 제공한다 .

• F. Network latency—netperf

NAT 로 할경우 꽤 많은 성능저하가 발생하였다 . 이 역시 – net=host option 을 줄경우 baremetal 과 거의 동일한 성능을 제공한다 .

출처 : http://blog.Docker.com/2014/03/Docker-0-9-introducing-execution-drivers-and-libcontainer/

14

Docker 의 성능비교

Disk I/O

G. Block I/O—fio도커와 kvm 의 성능저하는 거의 없음 .

그러나 IOPS 의 경우는 Docker 와 baremetal 과는 거의 차이가 없으나 , kvm 의 경우는 qume 를 통한 I/O operation 때문에 성능 저하가 눈에 띄게 나타남 .

출처 : http://blog.Docker.com/2014/03/Docker-0-9-introducing-execution-drivers-and-libcontainer/

15

Docker 의 성능비교

Application test

Redis NoSQL data store and MySQL databasecpu 가 부족하게 될때 , I/O latency overhead 가 증가함 . Docker 는 lxc-sytle 의 container 를 사용하기 쉽게 하기 위해서 , NAT 와 AUFS 를 사용했는데 , 반대급부로 성능저하를 야기시킨다 . Network namespace 를 없애는 것이 (-net=host) NAT 로 인한 성능저하를 막는다 . Filesystem 을 사용하는 application 이나 disk job 이 많을 경우 , AUFS 를 사용하지 말고 , volume 을 사용하기를 권장함

출처 : http://blog.Docker.com/2014/03/Docker-0-9-introducing-execution-drivers-and-libcontainer/

Fig. 8. Evaluation of NoSQL Redis performance (requests/s) on multiple deployment scenarios

Fig. 10. MySQL throughput (transactions/s) vs. concurrency

16

ContentsContents1.1. Why Docker?

1.11.1 가상화 vs Docker

1.21.2 Docker 의 성능비교

2.2. Docker 구축

2.12.1 Docker 구축 기초

2.22.2 Docker 로 WEB 서비스 구축

3.3. Openstack 위의 Docker

3.13.1 오픈스택에 docker 를 연결

2.32.3 Docker & Java

3.23.2Openstack 위에 Docker 로 WEB 서비스 구축

17

Docker 구축 기초

Cent OS 기본 설정

인터페이스 이름 변경합니다

NetworkManager 정지합니다

18

Docker 구축 기초

Cent OS 기본 설정

인터페이스 파일 생성합니다

기본 네트워킹 툴 설치합니다

19

Docker 구축 기초

Docker 패키지 설치

2.6.32-431 또는 상위 버전이 필요하며 RHEL 6.5 부터 지원합니다CentOS 7 은 CentOS Extra 레포지터리에 기본적으로 Docker 가 포함되어 있습니다

firewalld 정지 ( 운영시에는 각 컨테이너가 사용하는 포트를 오픈 ) 합니다

Cent OS 기본 설정

20

Docker 구축 기초

Docker 패키지 설치

CentOS 7 은 CentOS Extra 레포지터리에 기본적으로 Docker 가 포함되어 있습니다최신 버전을 사용하기 위해 Binary 설치를 진행합니다

Docker 실행

21

Docker 구축 기초

Docker 사용자

도커 데몬은 Unix Socket Binding 을 사용합니다Unix Socket 을 사용하기 위해서는 루트 권한이 필요하며 도커를 사용하는 사용자는 결과적으로 sudo 권한이 필요합니다도커 데몬은 항상 root 권한으로 실행되어야 합니다Docker 를 사용하려는 유저모두에게 sudo 권한을 주는 것은 쉽지는 않습니다docker 그룹을 생성 / docker 그룹에 포함된 사용자는 docker 를 사용할 수 있습니다기본적으로 docker 를 사용하는 유저는 신뢰성이 있는 사용자이어야 합니다

22

?

Docker 구축 기초

Docker Command

Dockerfile 을 통하여 이미지를 생성

Docker 이미지를 컨트롤

실행중인 컨테이너 강제종료

컨테이너 리스트를 확인

rm : 컨테이너 삭제rmi : 이미지 삭제

run : 컨테이너에서 실행할 명령어

컨테이너 시작

컨테이너 정지

?

23

Docker 구축 기초

Docker Hub

docker site 에 가입합니다Hub.docker.com 에서 검색이 가능합니다

[root@Tiger ~]# docker loginUsername: oscinfraPassword: Email: khoj@osci.krLogin Succeeded

24

Docker 구축 기초

도커 Hub 에서 이미지를 다운 받습니다

이미지 다운

다운로드한 이미지를 확인합니다

25

Docker 구축 기초

다운로드한 이미지를 컨테이너로 실행합니다

컨테이너 실행

컨테이너에서 bash 쉘을 실행한 화면입니다

26

ContentsContents1.1. Why Docker?

1.11.1 가상화 vs Docker

1.21.2 Docker 의 성능비교

2.2. Docker 구축

2.12.1 Docker 구축 기초

2.22.2 Docker 로 WEB 서비스 구축

3.3. Openstack 위의 Docker

3.13.1 오픈스택에 docker 를 연결

2.32.3 Docker & Java

3.23.2Openstack 위에 Docker 로 WEB 서비스 구축

27

Docker 로 WebService 구축

컨테이너 구동을 위한 이미지 생성

Dockerfile 을 생성합니다

도커 이미지를 어떻게 만들 것인지 정의 하는 파일

Base 이미지를 정의하며 , 항상 가장 먼저 정의하는 부분

이미지의 저작자와 E-mail 정보를 표기

실제로 컨테이너 구동 후 내부에서 실행되는 명령어

컨테이너 내부에서 사용할 포트

컨테이너가 시작되었을때 실행할 파일 또는 스크립트

28

Docker 로 WebService 구축

컨테이너 구동을 위한 이미지 생성

Dockerfile 을 통한 이미지를 생성합니다Dockerfile 로 부터 이미지

생성

각 Step 마다 로그를 출력

도커 이미지 빌드는 캐쉬를 제공

각 Step 마다 이미지를 생성

최종이미지 생성 완료

29

Docker 로 WebService 구축

컨테이너 구동을 위한 이미지 생성

생성된 이미지 정보 확인합니다

모든 이미지 리스트를 확인합니다

중간과정의 이미지가 보존 됨

30

Docker 로 WebService 구축

컨테이너 구동

생성된 이미지로 컨테이너를 구동합니다

osci/nginx 이미지를 사용하여 osci-nginx 라는 컨테이너를 생성하는 명령어

Docker 호스트서버의 49153 포트를 컨테이너의 80 포트와 매핑한 상태

컨테이너 생성시 컨테이너 ID 출력

컨테이너가 실행되면서 수행한 커맨드 내용 출력

31

Docker 로 WebService 구축

WebServer 접근

docker 컨테이너 정보를 확인하여 dockerhost 에 매핑된 포트로 접근합니다

32

Docker 로 WebService 구축

실제 운영시 Webserver 구성

컨테이너에는 최소한의 것만 담아 넣어야 합니다어플리케이션의 실제 데이터는 호스트에 보관합니다여러개의 웹컨테이너가 하나의 호스트 데이터에 접근하여 실행가능합니다

호스트의 데이터를 매핑하여 nginx 컨테이너 기동

-v 옵션으로 호스트의 /var/www/nginx/html 디렉토리를 컨테이너의 /usr/share/nginx/html 에 매핑

docker inspect 옵션으로 실행중인 컨테이너의 볼륨 정보를 확인

33

Docker 로 WebService 구축

html 파일 수정컨테이너가 실행중에 /var/www/nginx/html/index.html 파일을 수정 후 저장합니다웹페이지를 갱신하면 수정사항이 즉시 반영됩니다

34

ContentsContents1.1. Why Docker?

1.11.1 가상화 vs Docker

1.21.2 Docker 의 성능비교

2.2. Docker 구축

2.12.1 Docker 구축 기초

2.22.2 Docker 로 WEB 서비스 구축

3.3. Openstack 위의 Docker

3.13.1 오픈스택에 docker 를 연결

2.32.3 Docker & Java

3.23.2Openstack 위에 Docker 로 WEB 서비스 구축

35

Docker & Java

개발 환경어플리케이션 개발환경에서는 다양한 버전의 java 가 필요한 경우가 있습니다각 어플리케이션 별로 경로를 변경해야하는 번거로움이 발생합니다

1.5 1.6 1.5 1.6

36

Docker & Java

컨테이너별로 다른 java 를 사용어플리케이션 데이터는 호스트의 볼륨으로 컨테이너별 공유가 가능합니다원하는 java 버전의 컨테이너로 어플리케이션을 동시 수행가능합니다

도커호스트

1.5 1.6 1.5 1.6

37

Docker & Java

구현

도커를 통하여 실제로 구현해 봅니다

38

ContentsContents1.1. Why Docker?

1.11.1 가상화 vs Docker

1.21.2 Docker 의 성능비교

2.2. Docker 구축

2.12.1 Docker 구축 기초

2.22.2 Docker 로 WEB 서비스 구축

3.3. Openstack 위의 Docker

3.13.1 오픈스택에 docker 를 연결

2.32.3 Docker & Java

3.23.2Openstack 위에 Docker 로 WEB 서비스 구축

39

왜 Docker on Openstack 인가 ?

Openstack + kvm / docker

Openstack 은 전반적인 datacenter 운영KVM 기반 가상화는 컴퓨터 자원관리 측면 Docker 는 어플리케이션 배포관련 컨테이너

http://docs.openstack.org/juno http://behindtheracks.com/category/juno/

Openstack 은 클라우드 인프라 스트럭처에서 제공해 주는 멀티테넌트의 보안 및 격리 , 관리 및 모니터링 , 스토리지 및 네트워킹등은 전반적인 datacenter 운영 기반

오픈스택위에 리소스 개수에 따른 CPU 사용률

Docker 는 높은 이식성 , 하드웨어 , Framework독립적인 컨테이너 .

속도 / 효율성 / 이동성

더 적은 메모리 /CPU OVERHEAD

Kvm/vmwaere/virtual machine 어디든도커라는것을 인식하지 못한채 리눅스 컨테이너 관리가능

오픈스택위에 리소스 개수에 따른 매모리 사용률

40

Benchmark Environment Topology

glance api / reg

nova api / cond / etc

keystone

rally

nova api / cond / etc

cinder api / sch / vol

docker lxc

dstat

controller compute node

glance api / reg

nova api / cond / etc

keystone

rally

nova api / cond / etc

cinder api / sch / vol

KVM

dstat

controller compute node

04/15/2023

+Awesome!

+Awesome!

41

Benchmark 결과 데이타 @ SoftLayer

41http://www.slideshare.net/BodenRussell/kvm-and-docker-lxc-benchmarking-with-openstack

• Cloudy operations with Docker LXC outperform VM• 48x server reboot, 1.5x server boot, 1.62x server snapshot, etc.

• Docker LXC density potential compared to VMs• 3x 메모리 절약 • 26x CPU 절약• 3.22x 더 작아진 이미지 • Docker LXC containers 는 bare metal 에서 돌리는것이 가상화위에서 돌리는것보다 같거나 더 나은 성능을 나타냄

• Env • Openstack : havana/icehouse• devstack • lxc-docker-0.10.0• Ubnutu 12.04

42

Openstack env

OpenStack Juno Install with Neutron on CentOS 7

3 nodes configuration (default)

3 networks configuration ( tunnel=>gre)

Local cinder ( limits of Test Bed), but disk was divided to another disk (uses alone)

http://docs.openstack.org/juno http://behindtheracks.com/category/juno/

192.168.0.0/24

43

Openstack env

OpenStack Juno Install with Neutron on CentOS 7

후에 최종적으로 4 node configuration 으로 변환될 예정임 . (+1 compute node)

http://docs.openstack.org/juno http://behindtheracks.com/category/juno/

첫번째 eth0 에는 각기 아래 ip 가 부여됩니다 .(Mgt network)• juno-controller: 192.168.32.181 / juno-network: 192.168.32.182 • juno-compute01: 192.168.32.183 / juno-compute02: 192.168.32.184

두번째 eth1 에는 각기 아래 ip 가 부여됩니다 . (tunneling network)* juno-network: 192.168.33.182 / juno-compute01: 192.168.33.183 / juno-compute02: 192.168.33.184

세번째 eth2 에는 floating IP 를 가지게 됩니다 . (public network-floating)* juno-network: pulbic IP 는 따로 IP 를 주지 않음 .

44

What to do during 20 min.

Docker + openstack

Docker 와 openstack 의 연동 필요성Docker 와 openstack 을 연동하기

출처 : https://wiki.openstack.org/wiki/Docker

45

Connect to Openstack

Docker prerequsite

Install python-pip/git/gcc/wget/lynx

Install Oslo.logyum install -y python-pip git gcc wgetyum install -y dockerusermod -G docker novaservice openstack-nova-compute restartpip install pbr wget https://pypi.python.org/packages/source/o/oslo.log/oslo.log-0.4.0.tar.gz#md5=e02b6feebe849c8bae50b5c329f7a9e0Lstar -xvf oslo.log-0.4.0.tar.gzcd ./oslo.log-0.4.0python setup.py install ; pip install pbr

Nova-docker

Install nova-docker

git checkout stable/juno

git clone https://github.com/stackforge/nova-docker.git cd nova-docker/ git checkout stable/juno python setup.py install

46

Change openstack setting

Setting env

chmod 666 /var/run/docker.sock

mkdir /etc/nova/rootwrap.d

mkdir /etc/nova/rootwrap.dcat /etc/nova/rootwrap.d/docker.filters# nova-rootwrap command filters for setting up network in the docker driver# This file should be owned by (and only-writeable by) the root user[Filters]# nova/virt/docker/driver.py: 'ln', '-sf', '/var/run/netns/.*'ln: CommandFilter, /bin/ln, root

service docker startchmod 660 /var/run/docker.sock

cat /etc/nova/nova.conf # compute dirver 바꾸기 compute_driver = novadocker.virt.docker.DockerDriver

cat /etc/glance/glance-api.conf # container 형식으로 지원변경 container_formats=ami,ari,aki,bare,ovf,ova,docker

service openstack-glance-api restartservice openstack-nova-compute restart

47

Make glance image

Setting env

check docker

Check the openstack

$ docker pull busybox$ docker save busybox | glance image-create --is-public=True --container-format=docker --disk-format=raw --name busyboxnova keypair-add mykey > mykey.pemnova boot --flavor m1.small --image cirros --key-name mykey test1nova listssh -i ../devstack/mykey.pem cirros@<IP ADDRESS>

docker pull busybox:latest cd source keystonerc_admin docker save busybox | glance image-create --is-public=True --container-format=docker --disk-format=raw --name busybox glance image-list nova boot --image busybox --flavor m1.tiny --nic net-id a937454d-a905-43d2-818d-8fc5a920d8f2 busyboxdocker ps -a docker attach <CONTAINER ID from command above>

48

Check the status

Setting env

Docker 상태를 먼저 살펴본다 .

$[root@juno-compute nova-docker]# docker run -i -t fedora /bin/bashPulling repository fedora834629358fe2: Download completeStatus: Downloaded newer image for fedora:latestbash-4.3#

간단한 이미지를 만들어본다 .

[root@juno-compute nova-docker]# docker pull larsks/thttpdPulling repository larsks/thttpda32a10d723ab: Download completeStatus: Downloaded newer image for larsks/thttpd:latest[root@juno-compute ~]# docker save larsks/thttpd | glance image-create --name larsks/thttpd --container-format docker --disk-format raw --is-public true+------------------+--------------------------------------+| Property | Value |+------------------+--------------------------------------+| checksum | cc8b32dcc9d12fbfa1d59ce655457d31 || name | larsks/thttpd |+------------------+--------------------------------------+

49

Check the status

Gui 화면에서 만들어 보기

[root@juno-compute ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES148ef2905e65 larsks/thttpd:latest "/thttpd -D -l /dev/ About a minute ago Up About a minute nova-f1aeb1e3-d395-4138-a92e-73c77e854709b122f9046020 larsks/thttpd:latest "/thttpd -D -l /dev/ 2 minutes ago Up 2 minutes nova-ac8d4a33-776b-4a13-be49-6b8bcfa87ec6e8dc72cd6a65 larsks/thttpd:latest "/thttpd -D -l /dev/ 9 minutes ago Up 9 minutes nova-d16b6bfe-4daa-48e5-a790-a9be088412ac

50

ContentsContents1.1. Why Docker?

1.11.1 가상화 vs Docker

1.21.2 Docker 의 성능비교

2.2. Docker 구축

2.12.1 Docker 구축 기초

2.22.2 Docker 로 WEB 서비스 구축

3.3. Openstack 위의 Docker

3.13.1 오픈스택에 docker 를 연결

2.32.3 Docker & Java

3.23.2Openstack 위에 Docker 로 WEB 서비스 구축

51

Openstack 위에 Docker 로 WEB 서비스 구축

docker image 가지고 와서 이미지 만들기

docker pull tutum/wordpress

[root@juno-compute ~]# docker pull tutum/wordpress

[root@juno-compute ~]# docker save tutum/wordpress | glance image-create --is-public=True --container-format=docker --disk-format=raw --name tutum/wordpress

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

+------------------+--------------------------------------+| Property | Value |+------------------+--------------------------------------+| checksum | c343cc7afce50d264640f3238943c6de || container_format | docker || created_at | 2015-03-11T06:12:39 || deleted | False || deleted_at | None || disk_format | raw || id | 570f59ed-a227-43b7-9be1-3ad9b85f49a7 || is_public | True || min_disk | 0 || min_ram | 0 || name | tutum/wordpress || owner | 3c402245243f443ebc2aa39605641be1 || protected | False || size | 492773376 || status | active || updated_at | 2015-03-11T06:14:19 || virtual_size | None |+------------------+--------------------------------------+

52

Openstack 위에 Docker 로 WEB 서비스 구축

docker image 가지고 와서 이미지 만들기

glance image

[root@juno-compute ~]# glance image-list

[root@juno-compute ~]# glance image-list+--------------------------------------+---------------------+-------------+------------------+-----------+--------+| ID | Name | Disk Format | Container Format | Size | Status |+--------------------------------------+---------------------+-------------+------------------+-----------+--------+| 707b9dfc-68e4-4a9c-b7bc-708127473a56 | centos7 | qcow2 | bare | 989069312 | active || 43d87a3d-e1da-4eac-86d3-33a8a4a0e62d | cirros-0.3.3-x86_64 | qcow2 | bare | 13200896 | active || 570f59ed-a227-43b7-9be1-3ad9b85f49a7 | tutum/wordpress | raw | docker | 492773376 | active |+--------------------------------------+---------------------+-------------+------------------+-----------+--------+

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

[root@juno-compute ~]# nova boot --image "tutum/wordpress" --flavor m1.tiny --key-name osc --nic net-id=00f8214c-fd7a-43f6-b469-6b78492adfff WordPress

[root@juno-compute ~]# neutron net-list+--------------------------------------+-----------+-----------------------------------------------------+| id | name | subnets |+--------------------------------------+-----------+-----------------------------------------------------+| 00f8214c-fd7a-43f6-b469-6b78492adfff | admin-net | a16ec435-0daa-4959-82c9-b6b6f50b9627 10.0.1.0/24 || 39e1abb0-d9bf-4f78-8cc6-88f0267e2b09 | ext-net | b74b68c0-84e7-4506-9169-1a1ff72ceb6f 192.168.0.0/24 || ddba5520-bc65-4762-a531-b1bfacd1b11e | test | b9bfb210-7c24-4c3c-809f-75cde2e5dd6f 10.0.2.0/24 |+--------------------------------------+-----------+-----------------------------------------------------+

53

Openstack 위에 Docker 로 WEB 서비스 구축

인스턴스 floating IP 주고 , 연결하기

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

54

Openstack 위에 Docker 로 WEB 서비스 구축 ]

웹서비스 창

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

55

Openstack 위에 Docker 로 WEB 서비스 구축 [ 15 분 ]

웹 서비스 창

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

56

Openstack 위에 Docker 로 WEB 서비스 구축

docker image 가지고 와서 이미지 만들기

docker pull tutum/mysql

[root@juno-compute ~]# docker pull tutum/mysql

[root@juno-compute ~]# docker save tutum/mysql:latest | glance image-create --is-public=True --container-format=docker --disk-format=raw --name tutum/mysql:latest

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

+------------------+--------------------------------------+| Property | Value |+------------------+--------------------------------------+| checksum | fa22fdac9cfda75cb9ecf67ed6d974c1 || container_format | docker || created_at | 2015-03-11T08:59:20 || deleted | False || deleted_at | None || disk_format | raw || id | 54c5a2f8-e1ae-475d-9eb6-0be8c38315f4 || is_public | True || min_disk | 0 || min_ram | 0 || name | tutum/mysql:latest || owner | 3c402245243f443ebc2aa39605641be1 || protected | False || size | 332313600 || status | active || updated_at | 2015-03-11T09:00:18 || virtual_size | None |+------------------+--------------------------------------+

57

Openstack 위에 Docker 로 WEB 서비스 구축 [ 15 분 ]

docker image 가지고 와서 이미지 만들기

glance image

[root@juno-compute ~]# glance image-list

+--------------------------------------+---------------------+-------------+------------------+-----------+--------+| ID | Name | Disk Format | Container Format | Size | Status |+--------------------------------------+---------------------+-------------+------------------+-----------+--------+| 707b9dfc-68e4-4a9c-b7bc-708127473a56 | centos7 | qcow2 | bare | 989069312 | active || 43d87a3d-e1da-4eac-86d3-33a8a4a0e62d | cirros-0.3.3-x86_64 | qcow2 | bare | 13200896 | active || 54c5a2f8-e1ae-475d-9eb6-0be8c38315f4 | tutum/mysql:latest | raw | docker | 332313600 | active || 570f59ed-a227-43b7-9be1-3ad9b85f49a7 | tutum/wordpress | raw | docker | 492773376 | active |+--------------------------------------+---------------------+-------------+------------------+-----------+--------+

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

[root@juno-compute ~]# nova boot --image "tutum/mysql:latest" --flavor m1.tiny --key-name osc --nic net-id=00f8214c-fd7a-43f6-b469-6b78492adfff WordPress

[root@juno-compute ~]# neutron net-list+--------------------------------------+-----------+-----------------------------------------------------+| id | name | subnets |+--------------------------------------+-----------+-----------------------------------------------------+| 00f8214c-fd7a-43f6-b469-6b78492adfff | admin-net | a16ec435-0daa-4959-82c9-b6b6f50b9627 10.0.1.0/24 || 39e1abb0-d9bf-4f78-8cc6-88f0267e2b09 | ext-net | b74b68c0-84e7-4506-9169-1a1ff72ceb6f 192.168.0.0/24 || ddba5520-bc65-4762-a531-b1bfacd1b11e | test | b9bfb210-7c24-4c3c-809f-75cde2e5dd6f 10.0.2.0/24 |+--------------------------------------+-----------+-----------------------------------------------------+

58

Openstack 위에 Docker 로 WEB 서비스 구축

docker image 가지고 와서 이미지 만들기

mysql contact

[root@juno-compute ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5ba04d7d55c9 tutum/mysql:latest "/run.sh" 5 minutes ago Up 5 minutes nova-9b9de363-820a-459c-964f-ef1de66a5634 001aa14aa877 tutum/wordpress:latest "/run.sh" 2 hours ago Up 2 hours nova-f9a4d63d-9184-416b-aa6f-1691d1d19139

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

[root@juno-compute ~]# docker logs 5ba04d7d55c9=> An empty or uninitialized MySQL volume is detected in /var/lib/mysql=> Installing MySQL ...=> Done!=> Creating admin user ...=> Waiting for confirmation of MySQL service startup, trying 0/13 ...=> Creating MySQL user admin with random password=> Done!========================================================================You can now connect to this MySQL Server using:

mysql -uadmin -pSXgwTukrk2fK -h<host> -P<port>

59

Openstack 위에 Docker 로 WEB 서비스 구축

docker image 가지고 와서 이미지 만들기

mysql connect

출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)

[root@juno-controller rootwrap.d]# mysql -uadmin -pSXgwTukrk2fK -h 192.168.0.213 -P 3306Welcome to the MariaDB monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> MySQL [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema |+--------------------+3 rows in set (0.00 sec)

60

61