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

DockerImagePruneでDockerイメージを管理しやすくする

プロジェクトのデプロイとDockerコンテナーでのテストに集中していると、事態は非常に簡単に混乱する可能性があります。ワークスペースを時々クリーンアップする必要があることに気付くでしょう。では、Dockerイメージの整理やその他の便利なコマンドを使用して、Docker環境をすっきりさせてみませんか?

このチュートリアルでは、Docker環境をクリーンで管理しやすくするための多くの方法と、潜在的な複雑さを抑えるためのいくつかのベストプラクティスについて説明します。

始めましょう!

前提条件

このチュートリアルを続けるには、次のものを自由に使用できるようにする必要があります。

  • Windows 10 PC –このチュートリアルではWindows 10を使用し、PowerShellでDockerコマンドを起動しますが、Dockerを実行するOSであれば問題ありません。
  • Docker –このチュートリアルでは、コンテナーホストにDockerDesktopv3.6.0を使用します。
  • クリーンアップする既存のDockerコンテナ

Dockerイメージの削除

Docker環境は、イメージ、コンテナー、ネットワーキングなどのさまざまなコンポーネントで構成されています。クリーンアップするさまざまなコンポーネントがあります。最初に、不要になった古い画像を削除することから、このクリーンアッププロセスを開始しましょう。ただし、画像を削除し、それらの削除された画像を必要とするDockerfileを作成した場合、Dockerはそれらを自動的に再度ダウンロードします。

過去にダウンロードした不要な画像を削除する必要がある場合は、rm コマンドはあなたの友達です。このコマンドは、画像を削除します コンテナですが、チュートリアルでは最初に画像に焦点を当てます。

削除するイメージを現在使用しているコンテナが1つ以上ある場合は、最初にdocker stopを使用してそのイメージを使用しているコンテナを停止する必要があります。 指図。詳細については、ATAの記事「物事を台無しにせずにDockerStopContainersを使用する」をご覧ください。

イメージを使用しているコンテナーを停止しない限り、Dockerイメージを削除できないことに注意してください。

docker rmを使用して画像を削除するには 、最初に画像IDを見つける必要があります。これを行うには、docker image lsを実行します 指図。 docker image ls コマンドはDockerを読み取り、各イメージのIDを含む現在のすべてのイメージを返します。

docker imagesを実行することもできます 最近作成された画像からを一覧表示するコマンド。

docker image ls

以下に、docker image lsの結果を示します。 列がREPOSITORYのテーブルリストのコマンド 、タグ画像ID 作成済み およびサイズ

イメージIDがわかったら、そのイメージIDをdocker image rmに提供します 以下に示すように、コマンド。これを行うと、Dockerは指定されたIDのイメージを削除します。

# Remove only the images with the specified image ID
docker image rm image_id

「ぶら下がっている」Dockerイメージの削除

より多くのコンテナを構築し、より多くのイメージをダウンロードし始めると、コンテナが関連付けられていないさまざまなイメージが作成される可能性があります。これらの画像は「ぶら下がり」または「漂遊」画像と呼ばれ、現在Dockerでは使用されていません。

ディスクスペースを節約し、整理整頓するために、これらのぶら下がっている画像をすべてクリーンアップしましょう。これを行うには、docker image pruneを実行します 。このコマンドはprunes または、コンテナが構築されていないイメージを削除します。

docker image prune

コンテナが関連付けられているかどうかに関係なく、すべての画像を削除する場合は、特定の画像IDを見つける必要はありません。 docker image prune -aを実行します 核になり、それらをすべて削除します。

Dockerコンテナの削除

Dockerイメージをクリーンアップしたら、コンテナーに移動します。幸い、コンテナを削除するタスクは、rmを使用して画像を削除するのと似ています。 コマンド。

まず、docker container lsでコンテナーIDを見つけます 以下に示すように、コンテナを削除するコマンド。このコマンドは、 CONTAINER IDを含むすべてのコンテナを返します 。 -al パラメータはオプションで、すべてのコンテナ(実行中かどうか)と各コンテナの最新バージョンのみを表示します。

docker container ls -al # List all Docker containers

コンテナIDがわかったら、docker rmを実行します 削除するコンテナIDを渡します。

# Remove only the containers with the specified container ID
docker rm container_id

以下に示すように、各IDをスペースで区切ることにより、複数のコンテナーIDを指定することもできます。このコマンドは(rmを削除します )コンテナIDがf8ec07177218のAlpineおよびDocker101チュートリアルコンテナ および6fac840d9382

docker rm f8ec07177218 6fac840d9382

停止したすべてのDockerコンテナを削除する

おそらく、スペースを占有している停止したコンテナがたくさんあります。ぶら下がっている画像のように、停止したコンテナは現時点では何の目的も果たしていません。

停止したすべてのコンテナを削除するには:

1. dockerを実行します 以下のコマンドですべてを一覧表示します(ls --all )Dockerコンテナ。 ステータスのすべてのコンテナに注目してください 終了(X)Y時間前 。これらのコンテナはすべて現在停止中です。

docker container ls --all

2.次に、docker container pruneを実行します。 停止したすべてのコンテナを削除するコマンド。このコマンドを実行すると、コマンドが削除したコンテナIDが表示されます。

docker container prune

3.最後に、docker container ls -aを実行します 停止した各コンテナが削除されたことを再度確認します。

1つ以上のコンテナIDを手動で指定したくない場合は、$()を使用してDockerコマンドをネストすることもできます。 両方のリストコンテナに移動し、docker container rm $(docker container ls -aq)を使用して1行で削除します 。 docker container コマンドはqを使用します コンテナをコンソールに戻さないように切り替えます。 Dockerがすべてのコンテナーを収集すると、docker container rmを実行します。 それぞれに対して。

ルールのフィルタリングによるDockerコンテナの削除

おそらくあなたは多くの異なるコンテナを持っていて、IDでそれらをそれぞれ削除するのは苦痛でしょう。それらすべてに共通の特性がある場合は、特定のクエリに一致するコンテナのみを削除するフィルタを作成できます。

特定のクエリに一致する複数のコンテナを削除するには、filterを使用します docker container pruneのパラメーターまたはフィルタリングフラグ 指図。このパラメータを使用すると、untilのいずれかを指定できます 日付またはlabelより前に作成されたコンテナをフィルタリングする属性 特定のラベルの有無にかかわらずコンテナを照合するための引数。

たとえば、10hを超えて作成されたすべての停止したコンテナを削除できます。 前に以下のコマンドを実行してください。

docker container prune --filter "until=10h"

Yと入力します 以下に示すように、Dockerコンテナの削除を確認します。削除が完了すると、削除されたコンテナと再利用されたスペースの合計が表示されます。

Dockerコマンドをネストしてコンテナをクリーンアップする

これまでに説明したすべてのコマンドでは、事前に各コンテナーを停止する必要がありました。しかし、コンテナが実行されている場合はどうなりますか?各コンテナを個別に停止する代わりに、Dockerコマンドを削除コマンドにネストして、すべてのコンテナを停止し、同時に削除することができます。

実行中のコンテナを削除するときは、特に注意してください。削除すると、そのDockerコンテナに依存する一部のアプリケーションまたはプロセスに影響を与える可能性があります。

ネストされたDocker($(docker container )以下のコマンドは、すべてのコンテナを静かに一覧表示します(-aq )現在実行中のものを含むメモリ内。次に、コンテナのリストが外部のdockerに渡されます。 削除するコマンド(rm )リスト内のコンテナ。

以下に示すように、ネストされたコマンドを実行すると、すべてのコンテナが一度に削除されることがわかります。したがって、コンテナのリストを確認すると、リストが空であるため、出力は得られません。

--rmを使用してコンテナを自動的に削除する フラグ

前のコマンドは、Dockerリストが乱雑になった後でのみDockerコンテナーを削除するために使用されます。しかし、なぜDockerリストが乱雑になるのを待つのでしょうか。あなたが「あなたが行くようにきれいな」タイプの労働者であるならば、予防的な掃除手段は--rmであなたの指先でちょうどあります フラグ。

--rm docker runのフラグ このコマンドは、マシン上で短時間だけテストを行い、そのコンテナ内の重要なファイルやデプロイメントを処理しない場合に便利です。

docker run 以下のコマンド構文は、選択した名前(container_name)でDockerコンテナーを追加します )とDockerイメージ(organization/base_image )DockerHubライブラリから。しかし、その後、--rm フラグはコンテナを自動的に削除します。

docker run --rm --name container_name organization/base_image

Dockerボリュームのクリーンアップ

Dockerは、イメージとコンテナだけで構成されているわけではありません。 Dockerエコシステムもストレージボリュームで構成されています。 IDの検索とアイテムの整理と同じ一般的な方法を使用して、ストレージボリュームもクリーンアップできます。

コンテナやイメージと同様に、docker volume lsを実行します システムにあるすべてのボリュームIDを確認します。

docker volume ls

以下に、このチュートリアルでは3つのボリュームがリストされていることがわかります。

次に、dockerを実行します 以下のコマンドを実行して、未使用のボリュームをすべて削除します(volume prune

未使用のDockerネットワークを削除するには、代わりに次のコマンドを実行します:docker network prune

docker volume prune

以下では、削除時に使用されていなかったため、コマンドによってすべてのローカルボリュームが削除されることがわかります。したがって、すべてのDockerボリュームを一覧表示すると、空のテーブルリストのみが表示されます。

未使用のDockerコンポーネントをすべて一度に削除する

このチュートリアル全体を通して、削除するDockerコンポーネントを選択してきました。テスト環境で作業していて、すべてを一度にクリーンアップしたい場合があります。各コンポーネントを個別にクリーンアップするのではなく、docker system pruneを使用してすべてをクリーンアップします。 !

docker system prune コマンドは、実行されていないコンテナ、未使用のネットワーク、未使用のイメージ、およびDockerエンジンのビルドキャッシュを削除します。

docker system prune

dd -f 警告メッセージを強制または抑制し、次のようにDockerシステム要素の削除を確認するフラグ:docker system prune -f

以下に、Dockerシステム要素の削除を続行するかどうかを尋ねるプロンプトが表示されます。 Yを入力して確定し、続行します。

結論

このチュートリアルでは、docker image pruneを使用してDockerイメージをクリーンアップするさまざまな方法について説明しました。 コマンド、docker container rmを使用してコンテナーを削除します 、など。

この新しく発見された知識を使用して、Dockerイメージをクリーンアップする独自の方法を開発してみませんか?おそらく、Dockerアセットインベントリまたはプロジェクトに適切な名前を付けて重要なイメージやコンテナの削除を回避できる優れたタグ付けシステムを作成しますか?


Docker
  1. 独自のDockerイメージを作成、タグ付け、アップロードする

  2. Dockerイメージを他の人と共有する方法

  3. Dockerイメージを変更する方法

  1. ホスト間でDockerイメージを移動する方法

  2. LinuxサーバーにDockerを使用してNextcloudをインストールする方法

  3. Dockerfileを使用してカスタムDockerイメージを自動的に構築および構成する方法–パート3

  1. Dockerパート4:カスタムDockerイメージの構築と公開

  2. ビルド済みのDockerイメージ入門

  3. Dockerイメージ、コンテナー、およびDockerHubの操作