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-ik
Manager
Open Source Consulting, Inc.
RHCE/RHCVA
3
Contents
1. Why Docker?
1.1 가상화 vs Docker
1.2 Docker의 성능비교
2. Docker 구축
2.1 Docker 구축 기초
2.2 Docker로 WEB서비스 구축
3. Openstack위의 Docker
3.1 오픈스택에 docker를 연결
2.3 Docker & Java
3.2 Openstack 위에 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 시 수분이 걸림(부팅동안, 많은 취약점과
장애발생 소지)
패치하고, 버전관리하는데 많은 노동력 집중
/hypervisor와 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 database
cpu가 부족하게 될때, 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
Contents
1. Why Docker?
1.1 가상화 vs Docker
1.2 Docker의 성능비교
2. Docker 구축
2.1 Docker 구축 기초
2.2 Docker로 WEB서비스 구축
3. Openstack위의 Docker
3.1 오픈스택에 docker를 연결
2.3 Docker & Java
3.2 Openstack 위에 Docker로 WEB서비스 구축
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 : 컨테이너에서 실행할 명령어
컨테이너 시작
컨테이너 정지
26
Contents
1. Why Docker?
1.1 가상화 vs Docker
1.2 Docker의 성능비교
2. Docker 구축
2.1 Docker 구축 기초
2.2 Docker로 WEB서비스 구축
3. Openstack위의 Docker
3.1 오픈스택에 docker를 연결
2.3 Docker & Java
3.2 Openstack 위에 Docker로 WEB서비스 구축
27
Docker로 WebService 구축
컨테이너 구동을 위한 이미지 생성
Dockerfile을 생성합니다
도커 이미지를 어떻게 만들
것인지 정의 하는 파일
Base 이미지를 정의하며, 항상
가장 먼저 정의하는 부분
이미지의 저작자와 E-mail
정보를 표기
실제로 컨테이너 구동 후
내부에서 실행되는 명령어
컨테이너 내부에서 사용할
포트
컨테이너가 시작되었을때
실행할 파일 또는 스크립트
28
Docker로 WebService 구축
컨테이너 구동을 위한 이미지 생성
Dockerfile을 통한 이미지를 생성합니다
Dockerfile로 부터 이미지 생성
각 Step 마다 로그를 출력
도커 이미지 빌드는 캐쉬를
제공
각 Step 마다 이미지를 생성
최종이미지 생성 완료
30
Docker로 WebService 구축
컨테이너 구동
생성된 이미지로 컨테이너를 구동합니다
osci/nginx 이미지를 사용하여 osci-nginx라는 컨테이너를 생성하는 명령어
Docker호스트서버의 49153포트를 컨테이너의80포트와 매핑한 상태
컨테이너 생성시 컨테이너 ID 출력
컨테이너가 실행되면서 수행한 커맨드 내용 출력
38
Contents
1. Why Docker?
1.1 가상화 vs Docker
1.2 Docker의 성능비교
2. Docker 구축
2.1 Docker 구축 기초
2.2 Docker로 WEB서비스 구축
3. Openstack위의 Docker
3.1 오픈스택에 docker를 연결
2.3 Docker & Java
3.2 Openstack 위에 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
5/11/2015
+
Awesome!
+
Awesome!
41
Benchmark 결과 데이타 @ SoftLayer
41
http://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.log
yum install -y python-pip git gcc wget
yum install -y docker
usermod -G docker nova
service openstack-nova-compute restart
pip install pbr
wget https://pypi.python.org/packages/source/o/oslo.log/oslo.log-
0.4.0.tar.gz#md5=e02b6feebe849c8bae50b5c329f7a9e0
Ls
tar -xvf oslo.log-0.4.0.tar.gz
cd ./oslo.log-0.4.0
python 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.d
cat /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 start
chmod 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 restart
service 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 busybox
nova keypair-add mykey > mykey.pem
nova boot --flavor m1.small --image cirros --key-name mykey test1
nova list
ssh -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 busybox
docker 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/bash
Pulling repository fedora
834629358fe2: Download complete
Status: Downloaded newer image for fedora:latest
bash-4.3#
간단한 이미지를 만들어본다.
[root@juno-compute nova-docker]# docker pull larsks/thttpd
Pulling repository larsks/thttpd
a32a10d723ab: Download complete
Status: 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 NAMES
148ef2905e65 larsks/thttpd:latest "/thttpd -D -l /dev/ About a minute ago
Up About a minute nova-f1aeb1e3-d395-4138-a92e-73c77e854709
b122f9046020 larsks/thttpd:latest "/thttpd -D -l /dev/ 2 minutes ago
Up 2 minutes nova-ac8d4a33-776b-4a13-be49-6b8bcfa87ec6
e8dc72cd6a65 larsks/thttpd:latest "/thttpd -D -l /dev/ 9 minutes ago
Up 9 minutes nova-d16b6bfe-4daa-48e5-a790-a9be088412ac
50
Contents
1. Why Docker?
1.1 가상화 vs Docker
1.2 Docker의 성능비교
2. Docker 구축
2.1 Docker 구축 기초
2.2 Docker로 WEB서비스 구축
3. Openstack위의 Docker
3.1 오픈스택에 docker를 연결
2.3 Docker & Java
3.2 Openstack 위에 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 NAMES
5ba04d7d55c9 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
3306
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server 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)