OpenStack和docker之间是很好的互补关系。Docker的出现能让laas层的资源使用更加充分,因为Docker相对虚拟机来说更加的轻量,对资源利用率更加充分。
环境准备
下载安装包
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地址;
编辑容器名称;
安全组访问控制;