boot2dockerのファイルシステム設定

Mac OSXのboot2dockerでCentOS7イメージを利用している際、yumコマンドでパッケージインストールが完了しない現象によく遭遇します。

yumのエラー出力を見るとError unpacking rpm packageのような内容であるため、書き込みI/Oエラーだろうと見当がつきます。

いくつかの作業をためした結果、Storage DriverをaufsからDevicemapperに変更することで安定しました。

まず、デフォルトのboot2dockerの環境を確認すると、以下のような設定になっています。

$ docker info
  
Containers: 5
Images: 51
_Storage Driver: aufs_
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 61
Execution Driver: native-0.2
Kernel Version: 3.18.5-tinycore64
Operating System: Boot2Docker 1.5.0 (TCL 5.4); master : a66bce5 – Tue Feb 10 23:31:27 UTC 2015

Storage Driverを変更するには、デフォルトの設定ファイルに変数をセットします。

$ docker ssh
$ sudo su
# echo "DOCKER_STORAGE=devicemapper" >> /var/lib/boot2docker/profile
# /etc/init.d/docker restart

Storage Driverが変わっていることを確認します。

$ docker info
Containers: 0
Images: 0
_Storage Driver: devicemapper_
Pool Name: docker-8:1-792411-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 305.7 MB
Data Space Total: 107.4 GB
Metadata Space Used: 729.1 kB
Metadata Space Total: 2.147 GB
Udev Sync Supported: false
Data loop file: /mnt/sda1/var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /mnt/sda1/var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.82-git (2013-10-04)

aufsとdevicemapperで、dockerコマンドの使い方にはとくにありません。

boot2dockerはバージョンアップ時にVMイメージごと差し替えをする必要があるため、新バージョンでも同じ設定が必要であれば同じ手順を実施することになります。

中馬崇尋
Chuma Takahiro