您的位置:首页 > 运维架构 > Docker

OpenStack里使用Nova Docker Driver需要注意的细节

2015-12-03 08:43 766 查看
OpenStack官网有一篇如何配置docker的文章,大体上是对的,但是忽略了很多细节。如果完全按照文档来配置,会发现遇到各种问题。本文将会晚上这些细节,并对需要引起特别注意的地方用红色字体显示。

1. 首先安装配置一个标准的两节点(controller和compute)的OpenStack,参考官方配置文档。

2. 在controller节点和compute节点上安装docker,具体安装过程参考如下链接。安装完成后启动docker服务。

http://docs.docker.io/en/latest/installation/

3. 在compute节点安装docker driver,需要提前安装git和python-pip,否则会报错:

# usermod -aG docker nova
# yum -y install git python-pip
# pip install -e git+https://github.com/stackforge/nova-docker#egg=novadocker
# cd src/novadocker/
# python setup.py install


4. 在compute节点配置/etc/nova/nova.conf,使用docker driver,并配置state_path=/var/lib/nova

[DEFAULT]
compute_driver = novadocker.virt.docker.DockerDriver
state_path=/var/lib/nova


注意,如果不配置state_path,会在创建instance的时候报错:"[Errno 13] Permission denied: '/usr/lib/python2.7/site-packages/instances'\n",这是因为默认的state_path指向了/usr/lib/python2.7/site-packages/,如下面nova/paths.py代码所示:

path_opts = [
cfg.StrOpt('pybasedir',
default=os.path.abspath(os.path.join(os.path.dirname(__file__),
'../')),
help='Directory where the nova python module is installed'),
cfg.StrOpt('bindir',
default=os.path.join(sys.prefix, 'local', 'bin'),
help='Directory where nova binaries are installed'),
cfg.StrOpt('state_path',
default='$pybasedir',
help="Top-level directory for maintaining nova's state"),
]


5. 将/src/novadocker/etc/nova/rootwrap.d/docker.filters文件拷贝到/etc/nova/rootwrap.d/docker.filters,并修改rootwrap.d的访问权限,然后启动nova-compute服务

# cp -R /src/novadocker/etc/nova/rootwrap.d /etc/nova/
# chown -R root:nova /etc/nova/rootwrap.d
# systemctl restart openstack-nova-compute


6. 在controller节点配置/etc/glance/glance-api.conf,如下:

[image_format]
container_formats = ami,ari,aki,bare,ovf,docker


注意:配置项需要在[image_format]条目下,而不是在[DEFAULT]条目下

7. 重新启动glance服务:

# openstack-sevice restart glance


8. 获取docker image,并生成glance image:

# docker search cirros
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
cirros                        CirrOS is a Tiny OS that specializes in ru...   20        [OK]
basivireddy/cirros            CirrOS image for Docker-Compute                 1
# docker pull cirros
# docker save cirros | glance image-create --container-format=docker --disk-format=raw --name cirros


注意:生成的glance image必须和docker image的名字一致,否则在创建instance的时候会报错:404 Client Error: Not Found ("No such image: xxxxx")

9. 最后就可以创建docker instance了

# nova boot --image cirros --flavor m1.tiny --nic net-id=59cc6a1d-0cc1-44c7-8b0a-9dc071fde397 docker-vm1
# nova list
+--------------------------------------+------------+--------+------------+-------------+-------------------+
| ID                                   | Name       | Status | Task State | Power State | Networks          |
+--------------------------------------+------------+--------+------------+-------------+-------------------+
| 318d366c-8f14-4723-8b24-2d6bf5ca0cbc | docker-vm1 | ACTIVE | -          | Running     | private=10.0.0.22 |
+--------------------------------------+------------+--------+------------+-------------+-------------------+
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: