Docker on ubuntu なイメージの格納場所変更の方法は調べると出てくるんですけど、CoreOSでの変更方法が出てこなかったのでメモ。
状況としては、以下のような感じで変更に至りました。
- CoreOSの動いてるディスクそんなに大きくない(60GB程度)
- Dockerデフォルトのまま動かしてる(/var/lib/docker, btrfsで動いてる)
- ちょっとサイズのでかいコンテナ作った
- コミットしようとしたらスペースないよって怒られた
- 別にディスクくっつけてそっちに出さなきゃ!
docker commit
するときはコミット時の差分の容量は空き容量としてないとコミットできないんですね(;´Д`)(当たり前だろ)
設定変更
/etc/systemd/system/docker.service
のServiceセクションの ExecStart
の起動コマンドを変更します。
ExecStart=/usr/bin/docker -d -s=btrfs -r=false -H fd://
ExecStart=/usr/bin/docker -d -s=btrfs -r=false -H fd:// -g 変更したいパス
再起動
systemctl daemon-reload
systemctl restart docker
トラブル
CoreOSはファイルシステムがbtrfsで、Dockerのストレージドライバもbtrfsがデフォルトになってるんですが、変更先をNFSにしちゃってました。
そのせいで再起動しても以下のようにログが出て動きませんでした。
Oct 16 10:51:08 DOCKER01 docker[32381]: 2014/10/16 01:51:08 docker daemon: 1.1.2 d84a070; execdriver: native; graphdriver: btrfs
Oct 16 10:51:08 DOCKER01 docker[32381]: [c3e1ee15] +job serveapi(fd://)
Oct 16 10:51:08 DOCKER01 docker[32381]: [c3e1ee15] +job initserver()
Oct 16 10:51:08 DOCKER01 docker[32381]: [c3e1ee15.initserver()] Creating server
Oct 16 10:51:08 DOCKER01 docker[32381]: 2014/10/16 01:51:08 Listening for HTTP on fd ()
Oct 16 10:51:08 DOCKER01 docker[32381]: prerequisites for driver not satisfied (wrong filesystem?)
Oct 16 10:51:08 DOCKER01 docker[32381]: [c3e1ee15] -job initserver() = ERR (1)
Oct 16 10:51:08 DOCKER01 docker[32381]: 2014/10/16 01:51:08 prerequisites for driver not satisfied (wrong filesystem?)
あー、ごめんなさい。
というわけで変更先もbtrfsにして解決しましたとさ。
devicemapperにすればよかったんじゃ?
そうなんですが、既に作っていたイメージ達が/var/lib/docker/btrfs
とかでできていたのでどうやって移行したらいいのかわからずこういう感じにしちゃいました。
たぶんもうちょいちゃんと調べればそこらへんの移行方法もわかると思います。(エクスポートすればいいのかな)