docker中部署openstack的验证
-by elikang

Docker作为一个开源的应用容器引擎,可以帮助开发者打包他们的应用以及依赖包到一个可移植的容器中,然后可以将应用发布到任何Linux机器上,极大的方便了开发者。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
既然Docker如此方便,我自然就萌生了将openstack的服务组件部署到Docker中,然后就可以将openstack轻松的迁移到其他系统平台上了。到网上去搜了一下资料,并没有发现这方面的文章,所以就打算自己亲自验证一下。

想要在Docker上搭建起openstack,需要分两大部分来完成:
第一部分:使用docker搭建openstack的安装环境
第二部分:在docker搭建起的容器中部署openstack组件

下面就具体介绍每一部分如何操作:

第一部分:使用docker搭建openstack的安装环境

主机环境:(参照openstack官网,使用两台主机搭建实验环境)
CPU: 8核
内存: 16GB
网卡: 需要两块网卡,配置可以openstack的需要自己修改。
本次试验采用192.168.100.0/24 作为管理网络
172.28.3.0/24作为外部公网
操作系统:CentOS7 64位



Docker容器内镜像:Ubuntu 14.04
Note:之所以选择这个版本的镜像是应为其它版本的Ubuntu安装过程出现了许多问题,解决起来比较麻烦;而且,现有的Centos镜像在调用systemctl的时候有个重大Bug未能解决。

1、安装docker
需要注意的是Docker需要LXC和AUFS等支持,最好将内核版本更新到3.8以后版本。

#yum -y docker

2、下载centos镜像

#docker pull ubuntu
//pull下来的ubuntu镜像就是14.04版本的,以后可能会更新,不过那时的版本应该也会稳定了。

3、刚下载的镜像还缺少很多东西,而且也不能使用ssh直接连接,所以需要以刚pull下来的镜像为基础重新制作一个新的镜像。

创建Dockerfile文件:

FROM ubuntu
MAINTAINER Eli Kang <3296189956@qq.com>
LABEL name="ubuntu ssh Image"

RUN apt-get update -y
RUN apt-get install -y openssh-server
RUN apt-get remove -y vim-common
RUN apt-get install -y vim
RUN mkdir /var/run/sshd; \
sed -i "s/Port.*/Port 20022/g" /etc/ssh/sshd_config; \
sed -i "s/PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config;

RUN echo root:123456 | chpasswd
EXPOSE 20022

CMD ["/bin/bash"]


使用如下命令build镜像:
docker build -t 172.28.3.23:5000/elikang/ubuntu_ssh .
//末尾的 '.'代表Dockerfile的路径,不能省略

稍等一会儿镜像就会制作完毕。我们在局域网环境下建立了私有仓库,可以使用如下命令push上去:
docker push 172.28.3.23:5000/elikang/ubuntu_ssh
这样,大家就可以随时pull下来这个镜像,方便地使用了。

4、运行pull下来的ubuntu_ssh镜像

此次试验使用的是宿主机的网络,所以请在容器运行之前,按照openstack的要求设置好网络。

#docker run -d -p 20022:20022 --net=host --privileged 172.28.3.23:5000/elikang/ubuntu_ssh /usr/sbin/sshd -D

之后就可以使用ssh登陆容器,进行后续的操作了。需要注意的是,sshd服务开启的端口已经被我设置成了20022端口,避免与宿主机的端口冲突。


第二部分:部署openstack

docker将openstack搭建环境安装好了之后,部署openstack的操作就可以参照官方网站给出的文档进行操作了。


附:

部署完成之后dashboard截图










Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐