Docker データ (イメージとコンテナ) は多くのスペースを必要とするため、別のドライブに移動する予定です。
ご存知のとおり、/var/lib/docker
別のドライブに移動して、そこにソフト リンクを作成できます。ただし、BTRFS が Docker に最適なファイル システム オプションであると読みました。
しかし、外付けドライブを BTRFS にフォーマットして既存のフォルダをそこに移動するだけでは不十分だと思います。このフォルダの内容は、使用しているファイル システムによって異なります。
異なるファイルシステムを持つ外部ドライブ上の docker フォルダー (イメージとコンテナー) を正しく移動 (再作成) するにはどうすればよいですか?
答え1
おっしゃるとおり、デフォルトの AUFS から BTRFS 形式のドライブに Docker イメージ/コンテナを単純に移動またはコピーするだけではうまくいきません。そのため、最初のステップとして、すべてのコンテナをイメージとしてコミットし、docker save
コマンドを使用してイメージを .tar ファイルとして保存します。その後、Docker で btrfs を使用する準備ができたら、を実行してdocker load
イメージを新しいストレージ ドライバーに読み込みます。
手順は大まかに次のようになります - これは私がUbuntu 14.10ボックスで行ったことです -
- 画像を保存する
docker save IMAGEID > /tmp/redis.tar
- btrfsを準備する
mkfs.btrfs /dev/sdb mkdir /var/lib/docker-btrfs /dev/sdb /var/lib/docker-btrfs/ をマウントします。
- docker を停止し、docker が btrfs を利用するように設定して実行します。
サービス docker 停止 docker -d -s btrfs --graph="/var/lib/docker-btrfs" -H unix:///var/run/docker.sock
上記の手順は、/etc/default/docker を変更することによっても実行できます。
- 画像を読み込みます。
docker load --input /tmp/redis.tar
ここからイメージを表示し、コンテナを実行できるはずです。コンテナの場合は、メソッドを試すこともできますexport
がimport
、私はそれを試したことはありません。