はじめに
Dockerコンテナーは、ソフトウェアの実行に必要なすべてのライブラリーと構成を備えた、自給自足の環境を提供するように設計されています。開発中は、古い、古い、未使用のコンポーネントで整理されていない状態になる可能性があります。
このガイドでは、Dockerイメージ、コンテナー、ボリューム、およびネットワークを削除してDocker環境を整理する方法を学習します。
これらのコマンドを使用すると、Dockerコンテナの管理が迅速かつ簡単になります。
前提条件
- Dockerを実行しているLinuxシステム
- ターミナル/コマンドラインへのアクセス( Ctrl + Alt + T Ubuntuでは、 Alt + F2 CentOSで)
- sudoのユーザーアカウント 特権
Dockerコンテナを削除する方法
コンテナは、プロセスを実行できる特定の環境を作成します。多くのコンテナは、開発ライフサイクル中に作成、テスト、および破棄されます。
したがって、不要なコンテナを見つけて削除する方法を知ることが重要です。
コンテナの停止
1.まず、次のコマンドを使用してすべてのDockerコンテナを一覧表示します:
docker container ls -a
出力には、実行中のすべてのコンテナ、それらのID、名前、イメージ、ステータス、およびその他のパラメータのリストが表示されます。
数値IDのみですべてのコンテナのリストを生成することもできます。コマンドを実行します:
docker container ls -aq
2.特定のコンテナを停止する 、次のように入力します:
docker container stop [container_id]
[container_id]
を置き換えます リストにあるコンテナの数値IDを使用します。
同じコマンドに複数のコンテナIDを入力できます。
すべてのコンテナを停止する 、次のように入力します:
docker container stop $(docker container ls -aq)
これにより、DockerはすべてのコンテナIDのリストを stop
のターゲットとして使用するように強制されます。 コマンド。
停止したコンテナを削除する
停止したコンテナを削除する 、次のコマンドを使用します:
docker container rm [container_id]
以前と同様に、これにより、指定したIDのコンテナーが削除されます。
停止したコンテナをすべて削除する
停止したすべてのコンテナを削除する :
docker container rm $(docker container ls -aq)
すべてのDockerコンテナを削除する
Dockerをクリーンにワイプして最初から開始するには、次のコマンドを入力します:
docker container stop $(docker container ls -aq) && docker system prune -af --volumes
これにより、Dockerは括弧内にリストされているコンテナーを停止するように指示されます。
括弧内では、数値IDを持つすべてのコンテナーのリストを生成するようにDockerに指示します。次に、情報はcontainer stop
に戻されます。 コマンドを実行し、すべてのコンテナを停止します。
&&
属性は、停止したすべてのコンテナーとボリュームを削除するようにDockerに指示します。
-af
これはすべてのコンテナに適用する必要があることを示します( a
)必要な確認なし( f
。
フィルター付きのコンテナーの削除
指定したラベルと一致しないすべてのオブジェクトを削除するように指定することもできます。
これを行うには、次のコマンドを使用します:
docker container prune --filter="label!=maintainer=Jeremy"
このコマンドは、Dockerにすべてのコンテナを削除するように指示します 「ジェレミー」のメンテナのラベルが付いていないもの 。"!=
コマンドは、「等しくない」を意味する論理表記です。 。"
label
の内訳 コマンド:
-
label=<key>
-
label=<key>=<value>
-
label!=<key>
-
label!=<key>=<value>
これらの用語をラベルと組み合わせて使用すると、Dockerでアセットを削除する際の詳細な制御が可能になります。
Dockerイメージを削除する方法
Dockerイメージはファイルであり、コンテナー内でコードを実行するために使用される複数のレイヤーが含まれています。
画像は、開発中に何度も繰り返される可能性があります。古い画像や古い画像はシステムを乱雑にし、ストレージスペースを占有し、検索をより面倒にする可能性があります。
1.Dockerイメージを削除する 、システム上のすべての画像を一覧表示することから始めます:
docker image ls
以下に示すように、出力にはローカルで利用可能なDockerイメージが表示されます。
2. IMAGE IDをメモします –これは画像の削除に使用される識別子です。
3.次に、不要な画像を削除します:
docker image rm [image_id1] [image_id2]
[image_id1]
を置き換えます および[image_id2]
最初のコマンドから取得したイメージIDを使用します。単一の画像ID、または削除する複数のIDを入力できます。
システムは、競合があり、リポジトリ参照を削除できないというエラーメッセージで要求に応答する場合があります。これは、コンテナがイメージを使用していることを示しています。画像を削除する前に、まずコンテナを削除する必要があります。
フィルターを使用したDockerイメージの削除
公開時点でサポートされているフィルタは、until
のみです。 およびlabel
。それでも、これらはDockerリソースを管理するための強力なツールです。
until
を使用します 特定の時間までのすべてのリソースを削除するためのフィルター。
次のように入力します:
docker image prune -a --filter "until=24h"
これにより、すべてが削除されます( -a
)過去24時間に作成された画像。このコマンドは、コンテナー、イメージ、およびフィルターに使用できます。削除するアセットを必ず指定してください。
until
コマンドは、Unixタイムスタンプ、日付形式のタイムスタンプ、またはマシン時間に対して計算された時間(30m、4h、2h25m)を受け入れます。
label
を使用する ラベルで定義されたアセットを削除するコマンド。
次のように入力します:
docker image prune --filter="label=old"
これにより、すべてのDockerイメージが削除されます 「古い」とラベル付けされているもの。
フィルタリングを使用して、ラベルの特定の値を定義することもできます。
たとえば、コンテナに「maintainer」キーのラベルが付いていて、「maintainer」の値が「bill」または「jeremy」の場合、次のように入力できます。
docker container prune --filter="label=maintainer=bill"
次に、Dockerは、ラベルが「maintainer」で値が「bill」のすべてのコンテナーを削除します。
Dockerボリュームを削除する方法
ボリュームはDockerデータを保存するために使用されます。
複数のコンテナからアクセスできるように、コンテナの外部にデータを保存して整理するのに役立ちます。
1.次のコマンドを使用して、使用可能なすべてのDockerボリュームのリストを生成します。
docker volume ls
ボリューム名に注意してください 削除したい。
2.次に次のように入力します:
docker volume rm VolumeName
必ずVolumeName
を置き換えてください 前のコマンドで生成した実際の名前を使用します。
ボリュームが既存のコンテナーによって使用されている場合、システムはエラーで応答します。これは、最初にコンテナを削除する必要があることを意味します。
Dockerネットワークを削除する方法
Dockerネットワークを使用すると、さまざまなコンテナーが相互に自由に通信できると同時に、ネットワーク外からのトラフィックを防ぐことができます。これは通常、Dockerブリッジネットワークを使用して行われます。
prune
コマンドは、未使用のネットワークをすべて削除します。
単一のネットワークの削除
1.既存のすべてのDockerネットワークのリストを表示します コマンドを使用して:
docker network ls
2. NETWORK IDをメモします –これは特定のネットワークを削除するために使用される識別子です。次に、次のように入力します。
docker network rm [networkID]
[networkID]
を置き換えます 最初のコマンドで取得したIDを使用します。
ネットワークにアクティブなエンドポイントがあることを示すエラーメッセージが表示される場合があります。これは、ネットワークが現在コンテナによって使用されていることを意味します。ネットワークを削除する前に、ネットワークを使用しているコンテナを削除する必要があります。
未使用のDockerオブジェクトをすべて削除
prune
コマンドは、コンテナに関連付けられていないすべてのリソースを自動的に削除します。これは、未使用のイメージ、コンテナ、ボリューム、およびネットワークをクリーンアップするための合理化された方法です。
ターミナルウィンドウで、次のように入力します。
docker system prune
追加のフラグを含めることができます:
-
-a
停止したコンテナと未使用の画像を含めるには -
-f
確認ダイアログをバイパスします --volumes
未使用のボリュームをすべて削除します
また、環境全体ではなく、削除する単一のタイプのオブジェクトを指定できます。
docker container prune
docker image prune
docker volume prune
docker network prune
docker system prune -a
を実行しています 未使用の画像とぶら下がっている画像の両方を削除します。現在実行中または終了中のコンテナで使用されているイメージは影響を受けません。
すべてのDockerリソースを一覧表示する
次のコマンドを入力して、リソースを表示します。
docker container ls
docker image ls
docker volume ls
docker network ls
docker info
上記は、コンテナの数、イメージ、およびDockerのインストールに関する情報を示しています。これらのコマンドは、保持したい、または削除したいリソースを見つけて識別するのに役立ちます。
次のフラグも追加できます:
-
-a
すべてのリソース(停止しているリソースを含む)を表示します -
-q
または--quiet
(数値IDのみを表示)