LoginSignup
9
10

More than 5 years have passed since last update.

CentOS5でdockerのベースイメージを自作する

Posted at

CentOSのdockerベースイメージ自作はCentOS6だとよく見かけるのですがCentOS5では見かけないのでチャレンジしてみました。

febootstrapのインストール

CentOS5ではepelからじゃないとfebootstrapをインストール出来ないので、yumリポジトリにepelを追加し、febootstrapをインストールします。

ブートストラップの作成

インストールしたfebootstrapはVer.3.x系なので、CentOS6(febootstrap Ver.2.x系)の場合と勝手が違います。

$ febootstrap --names yum bash coreutils -o bootstrap

--namesで必要なパッケージを列挙します。多分bashとかcoreutilsはいらないかもしれません(試していない)。
-oで出力先のディレクトリを指定します。

febootstrap 2.xであればこの時点でbootstrapの中身をtar.xzにしてやることでdockerにimportさせられるのですが、febootstrap 3.xでは違う形式のため、まだまだ続きます。

作成後のディレクトリには以下の2ファイルがあります。

bootstrap/
$ ls bootstrap
base.img    hostfiles

base.imgはスケルトン状態のファイルシステムを内包したcpio形式のファイル、hostfilesはホストからコピーされるファイルの一覧のテキストで、superminでは最低でもこれら2つのファイルを使ってイメージを構築するそうですよ。(詳しくはfebootstrap3のmanで)

febootstrap-supermin-helperでベースイメージを構築する

Fedoraな方ですと以下の様感じでsuperminコマンドを使用すれば良いようです。

$ supermin --build --format chroot bootstrap -o appliance.d

が、CentOS5ではsuperminが使えないっぽいので、febootstrap-supermin-helperを使用します。
febootstrap-supermin-helperではフォーマットがcpioext2しかなく、chrootが選べません。なのでext2を指定してディスクイメージを作成し、マウントさせて中身をいただくという手段を取ります。

$ sudo febootstrap-supermin-helper -u root -g root -f ext2 bootstrap/ i686 appliance/kernel appliance/initrd appliance/root

64bit環境の場合、i686のところをx86_64にしてください

作成したディスクイメージをマウントさせ、中身をアーカイブする

febootstrap-supermin-helperを実行した結果、applianceディレクトリには以下のファイルがあります。

$ ls appliance
initrd  kernel  root

この内、rootが目的のディスクイメージです。マウントして中身をアーカイブします。

$ sudo mount -t ext2 -o loop appliance/root mnt/
$ sudo tar cf centos5.tar -C mnt/ .
$ suto xz -v centos5.tar

あとはdockerを使っている環境にファイルを持って行き、importすればOKです。

$ cat centos5.tar.xz | docker import - local/centos:5

これで一応dockerイメージを作れましたが、もっと良い方法があるんじゃないかと思うほど面倒な手順なので、ひょっとしたら気づいてないだけでみんなもっと簡単に作っているのではないかと思っています。

9
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10