Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Docker osc 0508

8,409 views

Published on

도커에 관련한 세미나 자료입니다.
이전 자료에 없던

Published in: Technology
  • DOWNLOAD THI5 BOOKS 1NTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ..................................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookeBOOK Crime, eeBOOK Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Docker osc 0508

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

×