ディスク領域を解放する:Docker ボリュームをより大きなパーティションに安全に移動する
デフォルトでは、Docker はルート (/) パーティションにある「/var/lib/docker」内にすべてを保存します。コンテナーが大きくなるにつれて、このフォルダーはすぐにいっぱいになる可能性があります。サーバーの動作が遅い、データの保存に失敗する、またはランダムにクラッシュすることに気付いた場合は、ルート パーティションのスペースが不足していることが考えられます。このガイドでは、Docker ボリューム (またはデータ) を別のパーティションに移動し、ルート パーティションのスペースを解放する方法を説明します。
目次
Docker ボリュームを別のパーティションに移動する必要があるのはなぜですか
Docker コンテナは多くの場合、大量の永続データを生成します。時間の経過とともに、このデータはルート パーティションのストレージ領域を消費する可能性があります。 Docker ボリュームを別のパーティションに移動すると、次のことが可能になります。
- ルート ファイル システムの空き領域
- ディスクの枯渇によるシステムのクラッシュを防ぐ
- 大規模なアプリケーション データを専用ストレージに保存する
- 全体的なストレージ管理を改善する
たとえば、MySQL や PostgreSQL などのデータベース コンテナは、ボリューム内にギガバイトのデータを保存する場合があります。これらのボリュームをより大きな専用パーティションに移動すると、システムの安定性を維持するのに役立ちます。
Docker ボリューム ディレクトリを見つけます
Docker ボリュームを移動する前に、まず Docker がシステム上のどこにボリュームを保存するかを特定する必要があります。次のコマンドを実行して、利用可能なすべての Docker ボリュームを一覧表示します。
docker volume ls
ボリューム名を特定したら、以下のコマンドを実行して、その特定のボリュームを検査します。
docker volume inspect volume_name
このコマンドは、ボリュームに関する詳細情報を表示します。出力で、Mountpoint を探します。 フィールド。 Docker がボリューム データを保存する正確なディレクトリが表示されます。
Docker データ ルート全体を移動する
Docker データを別のパーティションに移動する 1 つの方法は、ボリューム、イメージ、コンテナー、ログを含む 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 ディレクトリをコピーし、転送中の進行状況を表示します。
あるいは、次のコマンドを使用すると、ハード リンク、ACL、拡張属性などの追加の Docker 属性が保存されます。
sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/ このバージョンは、より多くのファイルシステム メタデータを保持し、全体的な進行状況をより明確に示すため、Docker データを移行する場合に推奨されます。
この後、削除する前に、古いデータ ディレクトリの名前を変更してバックアップしてください。
sudo mv /var/lib/docker /var/lib/docker.old 次に、次のコマンドでデーモン ファイルを開いて、Docker の設定を更新します。
sudo nano /etc/docker/daemon.json このファイルに次のコンテンツを追加します。
{
"data-root": "/path/to/new/partition/docker-data"
}
最後に、sudo systemctl start docker で Docker を再起動します。 。この後、次のコマンドを使用して新しい Docker データ ディレクトリを確認できます。
docker info | grep "Docker Root Dir"
すべてが正常であれば、古いバックアップを削除します。
sudo rm -rf /var/lib/docker.old Docker デスクトップを使用してすべての Docker データを移動する (GUI 方法)
Docker Desktop では、ディスク イメージの場所を変更することで、すべての Docker データを別のパーティションに移動できます。このオプションは、イメージ、コンテナ、ボリューム、ビルド キャッシュなど、Docker によって保存されているすべてのものをシステム上の新しい場所に転送します。
これを行うには、Docker デスクトップを開き、設定に移動します。 、リソースに移動します。 → 上級 をクリックし、ディスク イメージの場所を見つけます。 オプション。
[参照] をクリックします。 そして、Docker にデータを保存させる新しいパーティションまたはドライブ上のフォルダー (「/mnt/newdisk/docker-data」など) を選択します。新しい場所を選択したら、[適用して再起動] をクリックします。 。その後、Docker Desktop が再起動され、既存のすべての 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 システム プルーンまたは個別のプルーン コマンドを使用して未使用のコンテナ、イメージ、ネットワーク、キャッシュをプルーニングすることや、Linux バインド マウントを使用して Docker のランタイムに影響を与えることなく大きなディレクトリを移動することが含まれます。
-
UbuntuとエレメンタリーOS:どちらがあなたに適したLinuxディストリビューションですか?
オープンソースのデスクトップOSについて考えると、Linuxにお金がかかります。 Linuxカーネルは、多数のユースケース固有のディストリビューションを生み出しました。 UbuntuとエレメンタリーOSは、引き続きLinuxユニバースで利用できる最良のオプションの一部です。 両方のディストリビューションが敬意を表し続けている間、それにもかかわらず、彼らは戦場でそれを戦い続けています。どちらのディストリビューションにも独自の言及点があり、それぞれのカテゴリで際立っています。 決定を簡単にするためのUbuntuとエレメンタリーOSの比較を次に示します。 デスクトップ環境 Ubuntu
-
Red Hat Enterprise Linux:企業向けの堅実なデスクトップディストリビューション
少し前に、Red Hat Enterprise Linux(「RHEL」)のパッケージから再構築された無料のオペレーティングシステムであるCentOSについて説明しました。これにより、Red Hat Enterprise Linuxのクローンが作成され、製品のサポートサービスに対してRed Hatの価格を支払う必要がないため、まったく費用がかかりません。 CentOSは、システム上でエンタープライズ品質のソフトウェアを手間をかけずに入手するための優れた方法かもしれませんが、それでも実際の取引を検討する価値があるかもしれません。では、Red Hat Enterprise Linux(年間29