在CentOS6下制作CentOS5的镜像教程

作者:袖梨 2022-06-30


安装镜像制作工具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 好像没那么好用

相关文章

精彩推荐