使用OpenStack管理Docker容器(一)

jopen 9年前發布 | 57K 次閱讀 Docker 分布式/云計算/大數據

本文將講述如何使用OpenStack創建并管理Docker,有3種流行的使用方法,使用的分別是Nova Docker驅動,Heat Docker插件,以及Magnum。這篇文章分成2部分,第一部分,將主要介紹Nova Docker驅動的用法。第二部分,是關于Heat Docker插件和Magnum。這是序列文章的第一部分。

在這篇文章中,我將介紹一些不同的方法,這些方法是關于OpenStack如何創建,以及管理Docker容器。三種主要的方法分別使用的是 Nova Docker驅動,Heat Docker插件,以及Magnum。Magnum比較新穎,現在仍在開發中。OpenStack是開源云編排軟件,Docker則是一個開源的容器管理 軟件。文章中,我假設用戶已經熟悉OpenStack和Docker。如果不熟悉的話,那么網上有許多資料可以用來學習OpenStack和 Docker,我的博客也可以找到關于 OpenStackDocker的文章。

Nova Docker Driver

Nova通常用來管理虛擬機。在這種方法中,Nova驅動將會進行擴展,以便用來催生Docker容器。接下來是Nova Docker wiki里面提及的架構示意圖。

 使用OpenStack管理Docker容器(一)

  • 為了催生容器,Nova計算驅動將指向Docker。
  • Nova Docker Virt驅動使用http api與Docker進行對話
  • Docker鏡像保存在Docker Registry中,并且從這里暴露給Glance,Nova將會使用Docker Registry創建容器。
  • </ul>

    Nova Docker 驅動與Devstack

    我按照 wiki里面提到的步驟,在OpenStack Devstack kilo下獲取Nova Docker驅動。為了使其可以在我的系統下正常工作,要進行一些鏡像調整。我在Virtualbox下使用Ubuntu 14.04進行下列測試,下面是一些主要步驟:

    1. 安裝Docker
    2. 安裝Nova Docker插件
    3. 進行Devstack的堆疊
    4. 安裝Nova-Docker rootwrap過濾器
    5. 應用Kilo解決方案
    6. 創建Docker鏡像,并將其暴露給Glance
    7. 由Nova催生Docker容器
    8. </ol>

      1. 安裝Docker

      Docker可以使用 這里提到的步驟進行安裝。下面是我系統上使用的版本,我已經開啟用戶訪問,這樣我就不需要在每個Docker命令中運行sudo。

      $ docker --version
      Docker version 1.6.2, build 7c8fca2

      2. 安裝Nova Docker插件

      wiki里面提到的步驟可以出色的工作。當我在查看驅動時,我使用的是穩定版本的kilo。

      git clone -b stable/kilo https://github.com/stackforge/nova-docker.git

      下面是安裝成功后,Nova Docker插件的版本號

      $ sudo pip list | grep nova-docker
      nova-docker (0.0.1.dev197)

      3. 進行Devstack的堆疊

      首先,檢查Devstack Kilo的代碼庫。

      git clone -b stable/kilo https://github.com/openstack-dev/devstack.git

      我稍微修改了local.conf文件,修改后的版本在 這里。接下來是進行堆疊。

      cd devstack;./stack.sh

      4. 安裝Nova-Docker rootwrap過濾器

      wiki里面提到的步驟可以出色的工作。

      sudo cp nova-docker/etc/nova/rootwrap.d/docker.filters \
      /etc/nova/rootwrap.d/

      5. 應用Kilo解決方案

      堆疊拋出了下面錯誤:

      2015-06-03 22:28:57.870 ERROR nova.openstack.common.threadgroup [req-f89bc2cd-5fcc-42e4-a588-ef92ab101fb3 None None] 'module' object has no attribute 'DOCKER'
      n-cpu.log.2015-06-03-222501:2015-06-03 22:28:57.870 TRACE nova.openstack.common.threadgroup AttributeError: 'module' object has no attribute 'DOCKER'

      在OpenStack的 郵件列表討論過這個問題,解決方法是編輯Docker驅動文件。在我的案例中,文件位于“/usr/local/lib/python2.7/dist-packages/novadocker/virt/docker“。

      6. 創建Docker鏡像,并將其暴露給Glance

      我首先使用 “docker pull nginx"命令,從Docker Hub抓取Nginx容器

      $ docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
      nginx               latest              a785ba7493fd        2 weeks ago         132.9 MB

      接下來將鏡像保存到Glance。

      docker save nginx |  glance image-create --is-public=True --container-format=docker --disk-format=raw --name nginx

      現在,查看Glance鏡像列表,我們可以看見Docker鏡像已經和其他實例鏡像在一起了,并且Nginx的類型是Docker。

      7. 由Nova催生Docker容器

      我們使用Glance里面的鏡像,創建nginx容器。Flavor事實上不是那么重要。

      nova boot --flavor m1.small --image nginx nginxtest

      查看主機里面正在運行的Docker容器。

      $ docker ps
      CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
      4f514bc59a41        nginx:latest        "nginx -g 'daemon of   12 seconds ago      Up 11 seconds                           nova-931335f8-ac5c-4c28-967b-25b9474ab2de   

      列出Nova實例:

      $ nova list
      +--------------------------------------+-----------+--------+------------+-------------+------------------+
      | ID                                   | Name      | Status | Task State | Power State | Networks         |
      +--------------------------------------+-----------+--------+------------+-------------+------------------+
      | 931335f8-ac5c-4c28-967b-25b9474ab2de | nginxtest | ACTIVE | -          | Running     | private=10.0.0.5 |
      +--------------------------------------+-----------+--------+------------+-------------+------------------+

      檢查nginx是否正常工作:

      $ curl 10.0.0.5Welcome to nginx!
      |
      |

      謝謝使用nginx。

      參考

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!