GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerイメージ、コンテナー、およびボリュームのディスクスペース使用量を確認する方法

LinuxシステムでDockerがどのくらいのスペースを消費するのか疑問に思っていますか?

主に、すべてのDockerイメージ、コンテナー、およびその他の関連エンティティは、/var/lib/dockerにあります。 。このディレクトリのサイズを確認して、Dockerが使用する合計ディスク容量を取得できます:

[email protected]:~$ sudo du -sh /var/lib/docker
4.9G	/var/lib/docker

ただし、これはあまり説明的ではないため、このディレクトリをさらに進んで、どのコンポーネントがどのスペースを使用しているかを確認する必要があります。

ありがたいことに、Dockerはこの情報をより便利な方法で取得するためのツールを提供しています。

Dockerディスクスペース使用量の確認[DockerWay]

イメージ、コンテナ、ローカルボリューム、またはビルドキャッシュによって使用されているスペースの量を知るための最も基本的な「Docker」の方法は次のとおりです。

docker system df

このコマンドを実行するとき(sudoを使用) 必要に応じて)、Dockerコンポーネントごとにグループ化されたすべてのディスク使用量情報を取得します。

[email protected]:~$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          4         4         1.065GB   0B (0%)
Containers      4         4         5.705kB   0B (0%)
Local Volumes   7         7         1.108GB   0B (0%)
Build Cache     0         0         0B        0B

これは、/ var / lib/dockerの合計サイズを確認するよりも間違いなく優れています。イメージ、コンテナ、およびボリュームによって消費されているスペースを確認できます。

ただし、これでも、どの画像またはボリュームがより多くのスペースを占めるかを明確に把握できます。

実際、そうです。 docker system df コマンドには詳細オプション-vがあります これらすべての詳細がわかります。

docker system df -v

詳細な出力は次のとおりです。

[email protected]:~$ docker system df -v
Images space usage:

REPOSITORY                               TAG       IMAGE ID       CREATED         SIZE      SHARED SIZE   UNIQUE SIZE   CONTAINERS
ghost                                    4.32.0    b40265427368   8 weeks ago     468.8MB   0B            468.8MB       1
jrcs/letsencrypt-nginx-proxy-companion   latest    037cc4751b5a   13 months ago   24.35MB   0B            24.35MB       1
jwilder/nginx-proxy                      latest    509ff2fb81dd   15 months ago   165MB     0B            165MB         1
mariadb                                  10.5.3    f5d2bcaf057b   20 months ago   407MB     0B            407MB         1

Containers space usage:

CONTAINER ID   IMAGE                                    COMMAND                  LOCAL VOLUMES   SIZE      CREATED        STATUS        NAMES
899cc90e85d9   ghost:4.32.0                             "docker-entrypoint.s…"   1               0B        8 weeks ago    Up 8 weeks    ghost_ghost_6
17b58fdafbce   jrcs/letsencrypt-nginx-proxy-companion   "/bin/bash /app/entr…"   4               571B      3 months ago   Up 2 months   letsencrypt-proxy-companion
58f99f46ee03   jwilder/nginx-proxy                      "/app/docker-entrypo…"   5               5.13kB    3 months ago   Up 2 months   jwilder-nginx-proxy
fb907286b60e   mariadb:10.5.3                           "docker-entrypoint.s…"   1               2B        3 months ago   Up 2 months   ghost_db_1

Local Volumes space usage:

VOLUME NAME                      LINKS     SIZE
ghostdb                          1         434.7MB
jwilder-nginx-with-ssl_acme      2         36.09kB
jwilder-nginx-with-ssl_certs     2         25.12kB
jwilder-nginx-with-ssl_dhparam   1         1.525kB
jwilder-nginx-with-ssl_html      2         1.106kB
jwilder-nginx-with-ssl_vhost     2         556B
ghost                            1         674MB

Build cache usage: 0B

CACHE ID   CACHE TYPE   SIZE      CREATED   LAST USED   USAGE     SHARED

いいですね他の方法もあります。

Dockerの画像サイズを確認する

Dockerイメージとそのサイズを確認したいだけの場合は、次のコマンドを使用することもできます:

docker image ls

システム上のすべてのDockerイメージと、サイズを含むいくつかの詳細が一覧表示されます。

[email protected]:~$ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
busybox       latest    beae173ccac6   6 weeks ago     1.24MB
ubuntu        latest    fb52e22af1b0   5 months ago    72.8MB
alpine        latest    49f356fa4513   10 months ago   5.61MB
hello-world   latest    d1165f221234   11 months ago   13.3kB
実行中のコンテナサイズの確認

同様に、実行中のDockerコンテナーのサイズを知りたい場合は、dockerpsコマンドを使用できます。

docker ps --size

コマンドの出力にSIZE列が追加されているはずです:

[email protected]:~$ docker ps --size
CONTAINER ID   IMAGE     COMMAND      CREATED         STATUS         PORTS     NAMES           SIZE
1171dcfb7e06   alpine    "sleep 10"   10 months ago   Up 9 seconds             always-policy   0B (virtual 5.61MB)

0Bと表示され、仮想5.61 MBが表示されていることに気づきましたか?仮想サイズには、共有の基になるイメージが含まれます。

Linuxのアプローチに戻りましょう。具体的には、実践的な例としてAlpineイメージとコンテナを使用します。

標準のLinuxコマンドを使用してDockerディスクスペースの使用状況を分析する

docker pullを使用するときはいつでも コマンドを実行するか、docker-compose up -dを実行します アプリケーションの起動を準備するために、これは実際にUbuntu20.04サーバーに保存されているイメージスペースの使用状況を探す方法です。

sudo du -sh /var/lib/docker/overlay2/<hash-named-directory>/

ここで、Overlay2はUbuntuのデフォルトのDockerストレージドライバーです。これは、docker infoを実行することで確認できます。 コマンドとストレージドライバの検索:

Storage Driver: overlay2

これが自分のものと異なる場合は、Docker用に別のストレージドライバーを使用しています。同様に、ディレクトリの場所は、同じストレージドライバに従って名前が付けられます。ストレージドライバーの可用性は、カーネルのサポートによって異なります。

特定のイメージディスクの使用法

特定のイメージの場所を探している場合は、プルされたイメージに対してDockerinspectコマンドを使用できます。たとえば、docker pull alpineを使用して高山の画像を取得したとします。 。次のコマンドを実行して検査します。

$ docker inspect alpine

コマンドを実行すると、Data内に3つのフィールドが表示されます。 GraphDriverの下のサブセクション :

...
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/merged",
                "UpperDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/diff",
                "WorkDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/work"
            },

...

上記の情報に基づいて、(duで前述した)がわかります。 コマンド構文)この場合は64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e

ここで、次のコマンドを実行して、アルパイン画像で使用されているスペースの量を確認できます。

[email protected]:~$ sudo du -sh /var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e
6.0M	/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e

同様に、イメージと同様に、コンテナも同じストレージドライバベースのディレクトリ内に保存されます。

/var/lib/docker/overlay2
特定のコンテナディスクの使用法

特定のコンテナの場所を探している場合は、inspectを再度使用できます 実行中のコンテナーのDockerでのコマンド。たとえば、docker run -ti -d alpineを使用してアルパインコンテナを実行したとします。 。 docker psを実行すると 、実行されていることがわかります:

$ docker ps
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS         PORTS     NAMES
cb341d6a28fa   alpine    "/bin/sh"   6 seconds ago   Up 5 seconds             confident_banzai

ここでは、コンテナの名前はランダムにconfident_banzaiになっています。 。それでは、調べてみましょう:

$ docker inspect confident_banzai

上記のコマンドを実行すると、Data内の前述の4つのフィールドすべてに気付くでしょう。 GraphDriverの下のサブセクション 。これらの場所は、画像で見たように、コンテナデータがホストシステムに物理的に保存される場所です。

...
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3-init/diff:/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/diff",
                "MergedDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/merged",
                "UpperDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/diff",
                "WorkDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/work"
            },
            "Name": "overlay2"
        },
...

これで、duを使用できます もう一度コマンド:

[email protected]:~$ sudo du -sh /var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3
32K	/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3

Dockerイメージやコンテナーとは異なり、ボリュームの物理的な場所は非常に単純です。ボリュームは次の場所にあります:

/var/lib/docker/volumes/

したがって、次のコマンドを実行して、システム上のDockerボリュームのディスクスペース使用量全体を知ることができます。

avimanyu @iborg-desktop:~$ sudo du -sh /var/lib/docker/volumes/
60K	/var/lib/docker/volumes/
特定のボリュームディスクの使用量

この場合、主に2つのタイプがあります。 1つは通常のDockerボリュームで、もう1つはバインドマウントです。

ドッカーボリューム

特定のボリュームの場所を探している場合は、docker volume lsを使用できます。 最初にコマンドを実行し、ボリューム名またはIDを確認してください。たとえば、ボリュームを使用して次のコマンドで高山コンテナを実行したとします。

docker run -ti -d --name alpine-container -v test-data:/var/lib/app/content alpine

ここで、test-dataという名前のボリューム 自動的に作成されます。 test.mdという名前のファイルを作成しましょう この場所の内部:

$ docker exec alpine-container sh -c "touch /var/lib/app/content/test.md"

ファイルが実際に作成されていることを確認します:

$ docker exec -ti alpine-container sh
/ # ls /var/lib/app/content/
test.md
/ # exit

docker volume lsを実行すると 、test-dataという名前のボリューム リストされます:

$ docker volume ls
DRIVER    VOLUME NAME
local     d502589845f7ae7775474bc01d8295d9492a6c26db2ee2c941c27f3cac4449d1
local     e71ee3960cfef0a133d323d146a1382f3e25856480a727c037b5c81b5022cb1b
local     test-data

最後に、ホストシステム上のファイルの実際の場所を確認できます。

$ sudo ls -l /var/lib/docker/volumes/test-data/_data
total 0
-rw-r--r-- 1 root root 0 Oct  6 23:20 test.md

したがって、マウントされたボリュームのパスは、常に_dataという名前のディレクトリ内にあります。 それぞれのボリュームディレクトリ内。

したがって、duを使用できます 特定のボリュームについては、ここでもう一度コマンドを実行してください!:

[email protected]:~$ sudo du -sh /var/lib/docker/volumes/test-data/_data
4.0K	/var/lib/docker/volumes/test-data/_data

ボリュームが使用しているスペースを確認するときは、必ずボリューム名をメモしてください。

バインドマウント

これは、ディスクスペースの使用状況を監視するためにLinuxアプローチを使用する必要があるDockerの唯一の例外です。同時に、実行中のコンテナを最初に停止することが常に望ましいです。

$ mkdir /home/avimanyu/test-data
$ docker run -ti -d --name alpine-container -v /home/avimanyu/test-data:/var/lib/app/content alpine

この場合、test-dataという名前のバインドマウントされたボリューム コンテナ側で/var/lib/app/contentとして利用可能になります 。

[email protected]:~$ sudo du -sh /home/avimanyu/test-data
4.0K	/home/avimanyu/test-data

コンテナ内で同じことをテストすることもできます:

[email protected]:~$ sudo docker exec -ti alpine-container sh
/ # du -sh /var/lib/app/content
4.0K	/var/lib/app/content

ご覧のとおり、実際にはバインドマウントであるため、上記で報告された両方のサイズは同じです。

ホスト上のDockerログは常にボリュームに保存されます。このセクションで説明されている方法を使用して、ユーザーはDockerボリュームのディスクスペース使用量を確認することでナビゲートして見つけることもできます。これはアプリごとに異なり、アプリボリューム内のログファイルの場所も異なります。

ボーナスのヒント

これまでに学んだことに基づいて、明らかに、次のコマンドを使用して、イメージとコンテナーのディスク使用量を一緒にフェッチすることもできます。

sudo du -sh /var/lib/docker/overlay2

ホスト上のDockerログは常にボリュームに保存されます。通常、Dockerのボリュームが大きい場合は、ログが蓄積され、非効率的に管理されていることを示している可能性があります。

Dockerログを確認する方法[保存またはリアルタイム]Dockerでログ管理を簡単にするいくつかの興味深い方法を調べて学びます。 LinuxハンドブックAvimanyuBandyopadhyay

この記事のボリュームのセクションで説明されている方法を使用して、ユーザーはDockerボリュームのディスクスペース使用量を確認することで、これをナビゲートして軽減することもできます。これはアプリごとに異なり、アプリボリューム内のログファイルの場所も異なります。

概要

このチュートリアルでは、一般的なLinuxベースのアプローチを採用して、ホストレベルでLinuxサーバー上にあるDockerイメージ、コンテナー、およびボリュームのディスクスペース占有率を確認する方法を示しました。また、推奨される(Docker)方法でそれを行う方法も学びました。

このアプローチに対するフィードバック、コメント、提案を共有したい場合は、以下のコメントセクションにご意見をお寄せください


Docker
  1. 空きディスク容量を見つけてディスク使用量を分析する方法は??

  2. Dockerイメージ、コンテナー、およびDockerファイルを詳細に使用する方法

  3. Linux で合計 RAM サイズとメモリ使用量を確認する方法

  1. イメージとコンテナーの使用状況とスペースを確認する方法

  2. Docker コンテナーをバックアップおよび復元する方法

  3. Docker コンテナを一時停止および再開する方法

  1. すべてのDockerイメージ、コンテナー、ボリューム、ネットワーク、および未使用のリソースを削除する方法

  2. Dockerコンテナをエクスポートおよびインポートする方法

  3. Ubuntu 20.04 および 20.10 でディスク容量を確認するにはどうすればよいですか?