Docker イメージのデフォルトの保存場所を変更する方法 (ソリューション)

Docker イメージのデフォルトの保存場所を変更する方法 (ソリューション)

システムの初期のパーティション分割により、オペレーティング システム内の対応する / パーティションは大きくなりすぎず、/var ディレクトリは個別にパーティション分割されません。 Docker サービスを実行すると、長期間使用すると、元々大きかったパーティションがだんだんと不足してきます。この問題にもっとうまく対処するにはどうすればよいでしょうか?

1. ソフトリンクを使用する

オペレーティング システムでは、デフォルトでは Docker コンテナの保存場所は /var/lib/docker ディレクトリの下にあることがわかっています。次のコマンドで具体的な場所を確認できます。

#デフォルトの保存場所$ sudo docker info | grep "Docker Root Dir"

デフォルトのストレージ容量が不足している問題を解決する最も直接的かつ効果的な方法は、このディレクトリに新しいパーティションをマウントすることです。ただし、元のシステム スペースが変更されていない場合は、ソフト リンク方式を採用してイメージとコンテナーのストレージ パスを変更し、同じ目的を達成します。

# Dockerサービスを停止します $ systemctl restart docker  
# Dockerサービスを停止します $ service docker stop

次に、/var/lib/docker ディレクトリ全体を、スペースをあまり占有しない宛先パスに移動します。この時点で Docker を起動すると、ストレージ ディレクトリは /var/lib/docker ディレクトリのままですが、実際にはデータ ディスク /data/docker に保存されていることがわかります。

# 元のコンテンツを移動する $ mv /var/lib/docker /data/docker  
# リンク $ ln -sf /data/docker /var/lib/docker

2. コンテナの起動パラメータを指定する

設定ファイルで、コンテナの起動パラメータ --graph=/var/lib/docker を指定して、イメージとコンテナのストレージ パスを指定します。 Docker の構成ファイルでは、バックグラウンド プロセスのパラメータのほとんどを設定できますが、その保存場所はオペレーティング システムごとに異なります。 Ubuntu での場所は /etc/default/docker ファイルで、CentOS での場所は /etc/sysconfig/docker ファイルです。

# CentOS6  
# Ubuntu はデフォルトで selinux メカニズムを有効にするため OPTIONS=--graph="/data/docker" --selinux-enabled -H fd://  
# CentOS7  
# docker.service ファイルを変更し、-g パラメータを使用して保存場所を指定します $ vi /usr/lib/systemd/system/docker.service  
ExecStart=/usr/bin/dockerd --graph /新しいパス/docker 
#ウブントゥ  
# Ubuntu はデフォルトで selinux メカニズムを有効にしないため OPTIONS=--graph="/data/docker" -H fd://

再起動後、Docker パスは /data/docker に変更されます。

# 設定ファイルを再読み込みします $ sudo systemctl daemon-reload  
# docker サービスを再起動します $ sudo systemctl restart docker.service

Docker バージョンが 1.12 以上の場合は、daemon.json ファイルを変更したり、新しいファイルを作成したりできます。変更は Docker サービスを再起動せずにすぐに有効になります。

# 設定ファイルを変更する $ vim /etc/docker/daemon.json  
{  
    「レジストリミラー」:  
        ["http://7e61f7f9.m.daocloud.io"],  
    "グラフ": "/新しいパス/docker"  
}

3. システムの下に設定ファイルを作成する

/etc/systemd/system/docker.service.d ディレクトリにドロップイン ファイル docker.conf を作成します。デフォルトでは、docker.service.d フォルダーは存在しないため、最初に作成する必要があります。 Drop-In ファイルを作成する理由は、Docker サービスが docker.conf ファイルに記載されている特定のパラメータを使用し、/lib/systemd/system/docker.service ファイル内のデフォルト サービスによって使用されるパラメータを上書きするためです。

# 新しい保存場所を定義する $ sudo vi /etc/systemd/system/docker.service.d/docker.conf  
[サービス]  
ExecStart=/usr/bin/dockerd --graph="/data/docker" --storage-driver=devicemapper

保存して vim エディターを終了します。/data/docker は新しいストレージの場所で、devicemapper は現在 Docker で使用されているストレージ ドライバーです。ストレージ ドライバーが異なる場合は、最初の手順で確認して書き留めた値を入力します。これで、サービス デーモンをリロードして Docker サービスを開始できます。これにより、新しいイメージとコンテナーが保存される場所が変更されます。すべてが正常に実行されたことを確認するには、docker info コマンドを実行して Docker ルート ディレクトリを確認します。

# 設定ファイルを再読み込みします $ sudo systemctl daemon-reload  
# dockerサービスを再起動します $ sudo systemctl start docker

Docker イメージのデフォルトの保存場所を変更する方法についての記事はこれで終わりです。Docker イメージのデフォルトの保存場所の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker Docker の保存場所を変更する コンテナイメージのサイズ制限を変更する操作
  • Docker のデフォルトイメージとコンテナの保存場所を変更する方法
  • Dockerでイメージ情報を表示する方法

<<:  MySQL で高性能なインデックスを作成するための完全な手順

>>:  JavaScript スコープチェーンの基本原理のグラフィカルな説明

推薦する

Springboot+Vue-Cropperでアバターの切り取りとアップロードの効果を実現

アバターをアップロードするにはVue-Cropperコンポーネントを使用します。参考までに具体的な内...

VirtualBoxにOpenSuseをインストールする方法

仮想マシンはホストマシンにインストールされます。 CPU とメモリはホスト マシンと共有する必要があ...

広告を閉じる効果を実現するJavascript

参考までに、Javascript を使用して広告を閉じる方法に関するケース スタディを示します。詳細...

React 星評価コンポーネントの実装

要件は、製品の評価データを渡すことであり、ページには対応する星の数が表示されます。 1. 異なる評価...

Vue ページに img 画像を導入する方法

HTMLを学ぶとき、画像タグ<img>は画像を導入します <img src=&qu...

Linux でも利用できる人気の Windows アプリ 10 選

データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...

MySQL 8.0.17 解凍版のインストールと設定方法のグラフィックチュートリアル

インストール中に遭遇した問題を記録しておきますので、皆様のお役に立てれば幸いです。 1. ダウンロー...

数千万のMySQLデータ量を素早くページ分割する方法

序文バックエンド開発では、一度に大量のデータがロードされ、メモリやディスク IO のオーバーヘッドが...

MySQL でデータをクエリし、条件に基づいて別のテーブルに更新する方法の例

この記事では、MySQL が条件に基づいてデータをクエリし、別のテーブルに更新する方法を例を使用して...

主キーを追加または変更するMySQL SQL文操作

テーブルフィールドを追加する テーブルtable1を変更し、トランザクタvarchar(10)をNu...

CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...

HTML でランダムロールコーラーを実装するためのサンプルコード

この点呼装置は簡易版であり、自動停止の必要性を考慮していないため、点呼を開始した後、停止ボタンをクリ...

Dockerイメージの階層化の原理の詳細な説明

ベースイメージベースイメージには 2 つの意味があります。他のイメージに依存せず、ゼロから構築します...

HTMLでのラジオ値の取得、割り当て、登録の詳細な説明

1. ラジオのグループ化名前が同じであれば、それらはグループであり、つまり、次のようにグループ内で選...