歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在CentOS6下制作CentOS5的鏡像

在CentOS6下制作CentOS5的鏡像

日期:2017/2/27 15:56:49   编辑:Linux教程

安裝鏡像制作工具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 文件,方法如下:

  1. 運行一個容器,然後執行以下命令
    # Fix up RPM database
    rm /var/lib/rpm/*
    rpm --initdb
    rpm -i --justdb '/var/cache/yum/*/packages/*.rpm'
  2. 將容器commit 為鏡像
    docker commit 容器id centos5-base-fixed
  3. 刪掉老的centos5的鏡像
    docker images rm centos5-base

最後補充一句,如果在CentOS5下用febootstrap 應該不能有這樣的問題。不過在CentOS5下 febootstrap 好像沒那麼好用

Copyright © Linux教程網 All Rights Reserved