【编者的话】本文翻译自 Sreenivas makam 的 博客 ,文章中,作者将讲述如何使用Openstack创建,及管理Docker,有3种流行的使用方法,使用的是分别是Nova Docker驱动,Heat Docker插件,以及Magnum。这篇文章分成3部分,第一部分,将主要介绍Nova Docker驱动的用法。
在这篇文章中,我将介绍一些不同的方法,这些方法是关于Openstack如何创建,以及管理Docker容器。3种主要的方法分别使用的是Nova Docker驱动,Heat Docker插件,以及Magnum。Magnum比较新颖,现在仍在开发中。Openstack是开源云编排软件,Docker则是一个开源的容器管理软件。文章中,我假设用户已经熟悉Openstack和Docker。如果不熟悉的话,那么网上有许多资料可以用来学习Openstack和Docker,我的博客也可以找到关于 Openstack 和 Docker 的文章。
Nova通常用来管理虚拟机。在这种方法中,Nova驱动将会进行扩展,以便用来触发Docker容器。接下来是Nova Docker wiki里面提及的架构示意图。
我按照 wiki 里面提到的步骤,在Openstack Devstack kilo下获取Nova Docker驱动。为了使其可以在我的系统下正常工作,要进行一些镜像调整。我在Virtualbox下使用Ubuntu 14.04进行下列测试,下面是一些主要步骤:
Docker可以使用 这里 提到的步骤进行安装。下面是我系统上使用的版本,我已经开启用户访问,这样我就不需要在每个Docker命令中运行sudo。
$ docker --version
Docker version 1.6.2, build 7c8fca2
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)
首先,检查Devstack Kilo的代码库。
git clone -b stable/kilo https://github.com/openstack-dev/devstack.git
我稍微修改了local.conf文件,修改后的版本在 这里 。接下来是进行堆叠。
cd devstack;./stack.sh
wiki里面提到的步骤可以出色的工作。
sudo cp nova-docker/etc/nova/rootwrap.d/docker.filters /
/etc/nova/rootwrap.d/
堆叠抛出了下面错误:
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“。
我首先使用 “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。
我们使用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。
原文链接: Openstack with Docker-part 1 (翻译:洪国安 审校:)
============================================
译者介绍
洪国安,编程爱好者,目前是一名大三学生,希望通过帮社区翻译,提高自己的知识面。