Dockerデータ(イメージとコンテナ)を別のFSの別のドライブに移動する

Dockerデータ(イメージとコンテナ)を別のFSの別のドライブに移動する

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

ここからイメージを表示し、コンテナを実行できるはずです。コンテナの場合は、メソッドを試すこともできますexportimport、私はそれを試したことはありません。

関連情報