Linux
 Computer >> コンピューター >  >> システム >> Linux

ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

デフォルトでは、Dockerはすべてのデータを「/var/lib/docker」に保存します。このディレクトリはルート(/)パーティション上にあるため、コンテナが増えていくとあっという間にディスクを圧迫してしまいます。サーバーの動作が遅くなった、データが保存できない、突然クラッシュするといった症状が出ている場合は、ルートパーティションの空き容量不足が原因である可能性が高いです。本記事では、Dockerのボリューム(データ)を別のパーティションへ移動し、ルートパーティションの空き容量を確保する方法を詳しく解説します。

Dockerボリュームを別パーティションへ移動すべき理由

Dockerコンテナは大量の永続データを生成することが多く、時間とともにルートパーティションのストレージを消費していきます。Dockerボリュームを別のパーティションに移動することで、次のようなメリットが得られます。

  • ルートファイルシステムの空き容量を確保できる
  • ディスク枯渇によるシステムクラッシュを防止できる
  • 大容量のアプリケーションデータを専用ストレージに保存できる
  • ストレージ管理全体が改善される

たとえば、MySQLやPostgreSQLなどのデータベースコンテナは、ボリューム内に数GB規模のデータを保存することがあります。そうしたボリュームを大容量の専用パーティションへ移動すれば、システムの安定性を維持しやすくなります。

Dockerボリュームの格納場所を確認する

ボリュームを移動する前に、まずDockerがシステム上のどこにデータを保存しているかを確認しましょう。以下のコマンドを実行すると、利用可能なすべてのDockerボリュームの一覧を表示できます。

docker volume ls
ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

ボリューム名を特定したら、次のコマンドでそのボリュームの詳細情報を確認します。

docker volume inspect volume_name

このコマンドはボリュームの詳細情報を表示します。出力結果の中のMountpointフィールドを探してください。ここには、Dockerがボリュームデータを保存している正確なディレクトリパスが表示されます。

ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

Dockerデータルート全体を移動する

Dockerデータを別パーティションへ移動する方法のひとつが、ボリューム・イメージ・コンテナ・ログを含むDockerストレージディレクトリ全体を再配置する方法です。「/var/lib/docker」がディスクを圧迫している場合、これが最もクリーンで安全な手法といえます。

まずは移行中にファイルが変更されないよう、Dockerサービスを停止します。

sudo systemctl stop docker

続いて、rsyncコマンドを使ってDockerデータをコピーします。

sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/

注意:「/path/to/new/partition/」は、実際の移行先パーティションのパスに置き換えてください。

このコマンドは、パーミッションを保持しながらDockerディレクトリをコピーし、転送中の進捗状況も表示します。

ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

あるいは、ハードリンクやACL、拡張属性など、Docker固有の追加属性まで保持できる次のコマンドを使用することもできます。

sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/

こちらはファイルシステムのメタデータをより多く保持でき、全体の進捗も把握しやすいため、Dockerデータの移行にはこの形式が推奨されます。

コピーが完了したら、削除する前に古いデータディレクトリをバックアップとしてリネームしておきます。

sudo mv /var/lib/docker /var/lib/docker.old

次に、以下のコマンドでdaemonファイルを開き、Dockerの設定を更新します。

sudo nano /etc/docker/daemon.json

ファイルに次の内容を追記してください。

{
"data-root": "/path/to/new/partition/docker-data"
}
ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

最後にsudo systemctl start dockerでDockerを再起動します。その後、次のコマンドで新しいDockerデータディレクトリが正しく反映されているか確認できます。

docker info | grep "Docker Root Dir"
ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

問題なく動作していることが確認できたら、古いバックアップを削除しましょう。

sudo rm -rf /var/lib/docker.old

Docker Desktop(GUI)ですべてのDockerデータを移動する

Docker Desktopでは、「Disk Image Location」を変更することで、すべてのDockerデータを別パーティションへ移動できます。このオプションにより、イメージ・コンテナ・ボリューム・ビルドキャッシュといったDockerが保存している全データが、システム上の新しい場所へ移されます。

手順は次のとおりです。Docker Desktopを開き、Settings(設定)からResourcesAdvancedと進み、Disk Image Locationオプションを見つけてください。

ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

Browseをクリックし、「/mnt/newdisk/docker-data」のように、Dockerにデータを保存させたい新しいパーティションやドライブ上のフォルダを選択します。移動先を選んだらApply & Restartをクリックします。Docker Desktopが再起動し、既存のDockerデータがすべて選択したパーティションへ移動されます。

ディスク容量を解放しよう:Dockerボリュームをより大きなパーティションへ安全に移行する方法

注意:この操作ではすべてのDockerデータが移動されます。現時点では、個別のボリュームだけをGUIで移動するオプションは用意されていません。

特定のボリュームデータのみを移動する

特定のDockerボリュームだけを別パーティションへ移動し、ホスト側のバインドマウント経由でコンテナから利用することも可能です。このアプローチはシンプルかつ安全で、バックアップも取りやすいのが特徴です。ボリュームを移動する前に、そのボリュームを使用しているコンテナを停止します。

docker stop container_name

続いて、rsyncを使ってすべてのデータを新しいディレクトリへ安全に移動します。

sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/

これで、旧ボリュームの内容がすべて「/data/docker/my_volume」へコピーされます。

次に、「docker-compose.yml」ファイルを編集し、Docker管理のボリュームではなくバインドマウントを使うように変更します。

services:
 my_service:
 volumes:
 - /data/docker/my_volume:/container/path

/container/pathは、元々ボリュームがマウントされていたコンテナ内のパスに置き換えてください。その後、以下のコマンドでコンテナを再デプロイします。

docker-compose up -d

まとめ

DockerボリュームやDockerデータディレクトリ全体を大容量パーティションへ移動すれば、ルートファイルシステムの空き容量を確保でき、サーバーを安定して稼働させられます。コンテナはデータ損失のリスクなく引き続きスムーズに動作し、今後のストレージ管理も格段に楽になります。

Dockerディレクトリ全体の移動が難しい環境でも、ほかの方法で空き容量を回復できます。たとえば、docker system pruneや個別のpruneコマンドで未使用のコンテナ・イメージ・ネットワーク・キャッシュを削除したり、Linuxのバインドマウントを活用してDockerのランタイムに影響を与えずに大容量ディレクトリを移動したりする方法があります。

  1. CachyOSに乗り換えた後、素のArch Linuxに戻すべきか?実体験から見えた答え

    公開日:2026年3月31日 午前10:00 EDT私がコンピューターに魅了されたきっかけは、2005年に手に入れた頼もしいCompaqマシンでした。それ以来、一切振り返ることなく、熱心ないじくり回し好き(ティンカー)へと成長しました。たいていの場合、最終的にはソフトブリックさせてしまうのですが。そして、ビデオゲームも大好きです。Arch Linuxのインストールは、ほとんど通過儀礼のようなもので、あらゆるLinuxユーザーがいつか経験する試練です。骨の折れるプロセスですが、その分システムの細部まで理解できるようになり、トラブルの切り分けが格段に速くなります。エリート主義のジョークはさておき、

  2. Ubuntu Serverから作る!自分だけのカスタムUbuntuディストリビューションの構築方法

    Ubuntuは非常に安定したOSで、ほとんどどんなPCにでもインストールでき、そのまま「動いてくれる」頼もしい存在です。優れた派生ディストリビューションも数多く存在し、それぞれ異なるデスクトップ環境を搭載しながら、本家Ubuntu Desktopと同じ優れたコアを共有しています。しかし、これらはどれも、おそらく一度も使わないであろう大量のソフトウェアがプリインストールされています。 例えば、DVDドライブを搭載していないノートPCに入っているDVD書き込みアプリや、VLCを別途インストールしているせいで使わないままの標準動画プレイヤーなどがその典型です。あるいは、あなたのLinuxマシンを構成