OpenStack和docker之间是很好的互补关系。Docker的出现能让laas层的资源使用更加充分,因为Docker相对虚拟机来说更加的轻量,对资源利用率更加充分。

OpenStack kilo中安装docker driver for nova_java

环境准备

下载安装包

1$ git clone https://github.com/stackforge/nova-docker.git
2$ git checkout HEAD^1

更新pdr版本,要求大于1.8

1$ pip install pbr --upgrade

安装docker

1$ cd nova-docker
2$ python setup.py install
3$ systemctl enable docker
4$ systemctl start docker
5$ chmod 666 /var/run/docker.sock

配置nova使用docker

编辑nova配置文件/etc/nova/nova.conf

1...
2compute_driver = novadocker.virt.docker.DockerDriver
3...

编辑文件/usr/share/nova/rootwrap/docker.filters


1# nova-rootwrap command filters for setting up network in the docker driver
2# This file should be owned by (and only-writeable by) the root user
3[Filters]
4# nova/virt/docker/driver.py: 'ln', '-sf', '/var/run/netns/.*'
5ln: CommandFilter, /bin/ln, root
6

创建/etc/nova/rootwrap.d/docker.filters并添加以下内容

1# nova-rootwrap command filters for setting up network in the docker driver
2# This file should be owned by (and only-writeable by) the root user
3[Filters]
4# nova/virt/docker/driver.py: 'ln', '-sf', '/var/run/netns/.*'
5ln: CommandFilter, /bin/ln, root
6

编辑/usr/lib/python2.7/site-packages /novadocker /virt/ docker/ driver.py
在line 425中的args增加tty:True

配置glance使用管理docker镜像

编辑/etc/glance/glance-api.conf添加以下内容

1...
2container_formats = ami,ari,aki,bare,ovf,ova,docker
3...

重启各项服务

1$ systemctl restart openstack-glance-api
2$ systemctl restart openstack-nova-compute

就此安装完成,这时就可以通过创建虚拟机的操作创建docker容器了。

常用docker命令

1$ docker ps -a #查看容器列表
2$ docker images #查看镜像列表
3$ docker rm <container> #删除容器
4$ docker rmi <image> #删除镜像
5$ docker run -t -i <image> <command> #启动容器
6$ docker exec -it <container> <command> #连接到已有容器
7$ docker save <image> | glance image-create --container-format=docker \
8                                            --disk-format=raw \
9                                            --name <image> #上传镜像到glance(默认nova启动的container会执行bash,如果需要指定命令可以通过glance image的os_command_line属性指定,这样通过image启动container就会执行相应的命令:如sshd服务:glance image-update --property os_command_line='/usr/bin/sshd -D' <image_id>)e

支持

目前,在OpenStack中容器支持的功能包含如下几个:

  • 创建、删除、重启、暂停/恢复、关闭、启动、重建;

  • dhcp分配虚拟网络IP地址;

  • 绑定、解除浮动IP地址;

  • 编辑容器名称;

  • 安全组访问控制;