docker osc 0508
TRANSCRIPT
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: [email protected] 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