openstack的镜像制作,其实社区已经提供了工具来制作,就是diskimage-builder这个工具
可以下载代码,或者yum进行安装
git clone https://github.com/openstack/diskimage-builder.git
git clone https://github.com/openstack/tripleo-image-elements.git
现在diskimage-builder已经可以制作各种各样的镜像了,如图所示
那么我们利用在docker中制作镜像,下面就是步骤
1、centos7环境中,需要先安装docker
yum install docker
service docker start
2、安装完成docker之后,需要制作docker镜像
Dockerfile文件
<span style="font-size:14px;"><span style="font-size:14px;">FROM centos:7
RUN yum -y install git qemu-img which sudo python-setuptools python-yaml parted e2fsprogs && yum clean all
RUN git clone https://git.openstack.org/openstack/diskimage-builder \
&& cd /diskimage-builder && python setup.py install
RUN git clone https://git.openstack.org/openstack/dib-utils \
&& cd /dib-utils && python setup.py install
RUN git clone https://github.com/openstack/tripleo-image-elements.git \
&& cd tripleo-image-elements && python setup.py install
ENV ELEMENTS_PATH usr/sharetripleo-image-elements/elements/</span></span>
3、在Dockerfile文件目录下,执行以下命令
docker build -t diskimage-create:latest .
4、创建好镜像之后,启动创建docker容器
docker run -d --name disk-create -it --privileged=true diskimage-create:latest /bin/bash
5、进入docker内之后,执行命令,开始创建centos镜像文件
disk-image-create -x -a amd64 -o centos7-0722 centos7 vm cloud-init
6、创建好的镜像就在你执行命令的目录下,如图所示
遇到过的问题:
kpartx -l test.raw
mount: could not find any device /dev/loop#Bad addresscan't set up loop
这个问题说明是没有创建loop设备,用这个命令创建loop设备
mknod -m 0660 /dev/loopX b 7 X
注意loopX对应的X。如下面示例
mknod -m 0660 /dev/loop2 b 7 2