安装镜像制作工具febootstrap
yum -y install febootstrap
使用febootstrap 制作CentOS5镜像目录
febootstrap -i bash \
-i wget -i yum -i iputils -i iproute -i man -i vim-minimal \
-i openssh-server -i openssh-clients -i cronie-anacron -i crontabs \
centos5 centos5-image http://mirrors.aliyun.com/centos/5/os/x86_64/
将镜像导入到Docker
cd centos5-image && tar -c . | docker import - centos5-base
好,下面开始验证镜像,查看镜像列表是否包含centos5-base
docker images
运行简单的bash
docker run -t -i centos5-base2 /bin/bash
看起来已经搞好了,不过接下来发现了一个严重的问题。
严重的问题
centos5的镜像执行rpm -qa的时候报错
bash-3.2# rpm -qa
rpmdb: /var/lib/rpm/Packages: unsupported hash version: 9
error: cannot open Packages index using db3 - Invalid argument (22)
error: cannot open Packages database in /var/lib/rpm
解决方法
为什么会出现rpmdb的报错?
因为我们使用centos6的yum安装包,导致镜像里的 /var/lib/rpm/Packages 文件的DB格式不能被老的centos5的rpm读取
我们需要重建 /var/lib/rpm/Packages 文件,方法如下:
运行一个容器,然后执行以下命令
# Fix up RPM database
rm /var/lib/rpm/*
rpm --initdb
rpm -i --justdb '/var/cache/yum/*/packages/*.rpm'
将容器commit 为镜像
docker commit 容器id centos5-base-fixed
删掉老的centos5的镜像
docker images rm centos5-base
最后补充一句,如果在CentOS5下用febootstrap 应该不能有这样的问题。不过在CentOS5下 febootstrap 好像没那么好用