SlideShare a Scribd company logo
1 of 61
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-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서비스 구축
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 login
Username: oscinfra
Password:
Email: khoj@osci.kr
Login Succeeded
24
Docker 구축 기초
도커 Hub 에서 이미지를 다운 받습니다
이미지 다운
다운로드한 이미지를 확인합니다
25
Docker 구축 기초
다운로드한 이미지를 컨테이너로 실행합니다
컨테이너 실행
컨테이너에서 bash 쉘을 실행한 화면입니다
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 마다 이미지를 생성
최종이미지 생성 완료
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
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서비스 구축
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
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)
60
61

More Related Content

What's hot

What's hot (18)

[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1][개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영
 
Prometheus in openstack-helm
Prometheus in openstack-helmPrometheus in openstack-helm
Prometheus in openstack-helm
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
 
OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
 
Kubernetes on Premise
Kubernetes on PremiseKubernetes on Premise
Kubernetes on Premise
 
Enterprise Docker
Enterprise DockerEnterprise Docker
Enterprise Docker
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 

Viewers also liked

오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교
sprdd
 

Viewers also liked (7)

[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 
sungmin slide
sungmin slidesungmin slide
sungmin slide
 

Similar to Docker osc 0508

aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
negabaro
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
OpenStack Korea Community
 

Similar to Docker osc 0508 (20)

aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] Docker
 
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 

Docker osc 0508

  • 1. 1 2015. 5. 8 ㈜ 오픈소스컨설팅 김호진,박현익 Docker (with openstack)
  • 2. 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. 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. 4 경쟁사보다 더 빠른 서비스와 더 많은 기능이 필요 규정준수와 인프라 보안 검증이 필수적임 Why Docker? IT CEO  비즈니스 영속성과 효율성 사이의 갈등 LINE OF BUSINESS  빠른 서비스가 필요하고, 더 많은 기능들이 필요 어플리케이션을 추가/신규/수정이 요청되고, 이를 위해 더 빠른 인프라 서비스를 요청 인프라/보안  규정준수와 인프라 보안이 필수 / 한정된 예산
  • 5. 5 Why Docker? Docker가 아래것을 해결해 줄수 있다면? IT변화/ 혁신을 위한 절대적 시간이 부족하고, 기존 legacy 인프라를 활용하는 것으로 해결이 불가능 이를 극복하는 대안으로 리소스를 효율적으로 사용하면서, 비용을 줄이는 방법 대두  Docker 빠른 비즈니스 대응 개발자 생산성 증대 클라우드 같은 더 빠르고 큰 확장성
  • 6. 6 Why Docker? Containers는 새로운 기술이 아니다. Conatiner는 새로운 기술이 아니며, 인프라의 발전된 형태로 이미 대부분 사용중임. 도커는 오픈소스 프로젝트이자 리눅스 컨테이너에 초점을 맞춘 신생업체의 이름 컨테이너(Container)란 여러 개의 애플리케이션을 단일 호스트에서 구동하기 위한 개념 대부분 cloud환경( AWS,Google Cloud Platform,Azure)에서 공식 지원 cgoups 워크로드가 필요로 하는 컴퓨트와 메모리, 디스크 I/O를 정의 Namespaces 워크로드를 구분하고 격리.
  • 7. 7 Why Docker? Containers는 새로운 기술이 아니다. Conatiner는 새로운 기술이 아니며, 인프라의 발전된 형태로 이미 대부분 사용중임. 출처: http://www.enterprisetech.com/2014/08/18/ibm-techies-pit-Docker-kvm-bare-metal/
  • 8. 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. 9 Why Docker? Docker로 해결할 수 있는 문제 기업에서 container 기술로 해결하고자 하는 문제 애플리케이션의 빠른 이식성 / 더 빠른 애플리케이션의 완성/ 배포의 유연성 / 더 빠른 애플리케이션 자원 최적화
  • 10. 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. 11 가상화와 도커의 차이 가상화 대비 도커의 장점 애플리케이션과 그 실행환경을 모두 포함한 소프트웨어 패키지 Host OS에 상관없이 배포가 쉽고, 유연함 Host OS와 애플리케이션을 분리 출처: http://www.channelinsider.com/tech-analysis/slideshows/linux-investments-looking-up-for-2015.html * 환경구성 소요시간
  • 12. 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. 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. 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. 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. 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서비스 구축
  • 17. 17 Docker 구축 기초 Cent OS 기본 설정 인터페이스 이름 변경합니다 NetworkManager 정지합니다
  • 18. 18 Docker 구축 기초 Cent OS 기본 설정 인터페이스 파일 생성합니다 기본 네트워킹 툴 설치합니다
  • 19. 19 Docker 구축 기초 Docker 패키지 설치 2.6.32-431 또는 상위 버전이 필요하며 RHEL 6.5 부터 지원합니다 CentOS 7은 CentOS Extra 레포지터리에 기본적으로 Docker가 포함되어 있습니다 firewalld 정지 (운영시에는 각 컨테이너가 사용하는 포트를 오픈) 합니다 Cent OS 기본 설정
  • 20. 20 Docker 구축 기초 Docker 패키지 설치 CentOS 7은 CentOS Extra 레포지터리에 기본적으로 Docker가 포함되어 있습니다 최신 버전을 사용하기 위해 Binary 설치를 진행합니다 Docker 실행
  • 21. 21 Docker 구축 기초 Docker 사용자 도커 데몬은 Unix Socket Binding을 사용합니다 Unix Socket을 사용하기 위해서는 루트 권한이 필요하며 도커를 사용하는 사용자는 결과적으로 sudo 권한이 필요합니다 도커 데몬은 항상 root 권한으로 실행되어야 합니다 Docker를 사용하려는 유저모두에게 sudo 권한을 주는 것은 쉽지는 않습니다 docker그룹을 생성 / docker그룹에 포함된 사용자는 docker를 사용할 수 있습니다 기본적으로 docker를 사용하는 유저는 신뢰성이 있는 사용자이어야 합니다
  • 22. 22 Docker 구축 기초 Docker Command Dockerfile 을 통하여 이미지를 생성 Docker 이미지를 컨트롤 실행중인 컨테이너 강제종료 컨테이너 리스트를 확인 rm : 컨테이너 삭제 rmi : 이미지 삭제 run : 컨테이너에서 실행할 명령어 컨테이너 시작 컨테이너 정지
  • 23. 23 Docker 구축 기초 Docker Hub docker site에 가입합니다 Hub.docker.com에서 검색이 가능합니다 [root@Tiger ~]# docker login Username: oscinfra Password: Email: khoj@osci.kr Login Succeeded
  • 24. 24 Docker 구축 기초 도커 Hub 에서 이미지를 다운 받습니다 이미지 다운 다운로드한 이미지를 확인합니다
  • 25. 25 Docker 구축 기초 다운로드한 이미지를 컨테이너로 실행합니다 컨테이너 실행 컨테이너에서 bash 쉘을 실행한 화면입니다
  • 26. 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. 27 Docker로 WebService 구축 컨테이너 구동을 위한 이미지 생성 Dockerfile을 생성합니다 도커 이미지를 어떻게 만들 것인지 정의 하는 파일 Base 이미지를 정의하며, 항상 가장 먼저 정의하는 부분 이미지의 저작자와 E-mail 정보를 표기 실제로 컨테이너 구동 후 내부에서 실행되는 명령어 컨테이너 내부에서 사용할 포트 컨테이너가 시작되었을때 실행할 파일 또는 스크립트
  • 28. 28 Docker로 WebService 구축 컨테이너 구동을 위한 이미지 생성 Dockerfile을 통한 이미지를 생성합니다 Dockerfile로 부터 이미지 생성 각 Step 마다 로그를 출력 도커 이미지 빌드는 캐쉬를 제공 각 Step 마다 이미지를 생성 최종이미지 생성 완료
  • 29. 29 Docker로 WebService 구축 컨테이너 구동을 위한 이미지 생성 생성된 이미지 정보 확인합니다 모든 이미지 리스트를 확인합니다 중간과정의 이미지가 보존 됨
  • 30. 30 Docker로 WebService 구축 컨테이너 구동 생성된 이미지로 컨테이너를 구동합니다 osci/nginx 이미지를 사용하여 osci-nginx라는 컨테이너를 생성하는 명령어 Docker호스트서버의 49153포트를 컨테이너의80포트와 매핑한 상태 컨테이너 생성시 컨테이너 ID 출력 컨테이너가 실행되면서 수행한 커맨드 내용 출력
  • 31. 31 Docker로 WebService 구축 WebServer 접근 docker 컨테이너 정보를 확인하여 dockerhost에 매핑된 포트로 접근합니다
  • 32. 32 Docker로 WebService 구축 실제 운영시 Webserver 구성 컨테이너에는 최소한의 것만 담아 넣어야 합니다 어플리케이션의 실제 데이터는 호스트에 보관합니다 여러개의 웹컨테이너가 하나의 호스트 데이터에 접근하여 실행가능합니다 호스트의 데이터를 매핑하여 nginx 컨테이너 기동 -v 옵션으로 호스트의 /var/www/nginx/html 디렉토리를 컨테이너의 /usr/share/nginx/html에 매핑 docker inspect 옵션으로 실행중인 컨테이너의 볼륨 정보를 확인
  • 33. 33 Docker로 WebService 구축 html 파일 수정 컨테이너가 실행중에 /var/www/nginx/html/index.html 파일을 수정 후 저장합니다 웹페이지를 갱신하면 수정사항이 즉시 반영됩니다
  • 34. 34 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서비스 구축
  • 35. 35 Docker & Java 개발 환경 어플리케이션 개발환경에서는 다양한 버전의 java가 필요한 경우가 있습니다 각 어플리케이션 별로 경로를 변경해야하는 번거로움이 발생합니다 1.5 1.6 1.5 1.6
  • 36. 36 Docker & Java 컨테이너별로 다른 java를 사용 어플리케이션 데이터는 호스트의 볼륨으로 컨테이너별 공유가 가능합니다 원하는 java 버전의 컨테이너로 어플리케이션을 동시 수행가능합니다 도커호스트 1.5 1.6 1.5 1.6
  • 37. 37 Docker & Java 구현 도커를 통하여 실제로 구현해 봅니다
  • 38. 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. 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. 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. 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. 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. 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. 44 What to do during 20 min. Docker + openstack Docker와 openstack의 연동 필요성 Docker와 openstack을 연동하기 출처 : https://wiki.openstack.org/wiki/Docker
  • 45. 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. 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. 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. 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. 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. 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. 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. 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. 53 Openstack 위에 Docker로 WEB서비스 구축 인스턴스 floating IP 주고, 연결하기 출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)
  • 54. 54 Openstack 위에 Docker로 WEB서비스 구축] 웹서비스 창 출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)
  • 55. 55 Openstack 위에 Docker로 WEB서비스 구축 [ 15분] 웹 서비스 창 출처 ㅣ: Xen Virtualization on Linux and Solaris : Running Nova-Docker on OpenStack RDO Juno (CentOS 7)
  • 56. 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. 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. 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. 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)
  • 60. 60
  • 61. 61