前書き:
docker をよく使用する友人は、docker がリソースをすぐに占有することを知っています。最も明白で検出しやすいのは、ディスク領域の占有です。では、docker によって占有されているシステム リソースをクリーンアップするにはどうすればよいでしょうか?
(学習ビデオ共有: プログラミング入門)
方法は次のとおりです:
docker が占有しているリソースを表示します
リソースをクリーンアップしています その前に、docker がどのシステム リソースを占有しているかを把握する必要があります。これを実行するには、さまざまなコマンドを組み合わせる必要があります。
docker container ls: デフォルトでは、実行中のコンテナのみがリストされます。-a オプションを指定すると、停止したコンテナを含むすべてのコンテナがリストされます。
docker image ls: イメージ情報のリスト -a オプションは、中間イメージ (他のイメージが依存するレイヤー) をリストします。
docker volume ls: データ ボリュームを一覧表示します。
docker network ls: ネットワークをリストします。
docker info: コンテナーやイメージの数などのシステムレベルの情報を表示します。
これらのコマンドを通じて docker によって使用されているリソースを確認した後、docker によって占有されているリソースの一部をクリーンアップすることに決めたと思います。使用されていないリソースから始めましょう。
未使用のリソースのみを削除してください
Docker は、停止したコンテナー、未解決のイメージ、コンテナーによって参照されていないネットワーク、およびビルド プロセスのキャッシュを削除するための便利な docker system prune コマンドを提供します:
$ docker system prune
セキュリティ上の理由から、このコマンドはデフォルトではどのコンテナからも参照されていないデータ ボリュームを削除しません。これらのデータ ボリュームを同時に削除する必要がある場合は、明示的に削除する必要があります。 --volumns パラメータを指定します。たとえば、次のコマンドを実行するとよいでしょう:
$ docker system prune --all --force --volumes
今回はデータ ボリュームが削除されるだけでなく、確認プロセスも行われません。 --all パラメータを使用すると、ぶら下がりイメージだけでなく、参照されていないイメージがすべて削除されることに注意してください。
ダングリング イメージとは何かをここで説明する必要がありますが、実際には、どのイメージからも参照されていないイメージとして単純に理解できます。たとえば、イメージを再構築した後、以前に構築された参照されなくなったイメージ レイヤーは、ぶら下がったイメージになります。
ローカル イメージが更新されると、次のようなイメージになります。画像の赤枠内の
# これらの画像中間イメージ (他のイメージが依存するレイヤー) と呼ばれます。
別のサブコマンドで prune を実行して、特定の種類のリソースを削除することもできます。
docker container prune # 删除所有退出状态的容器 docker volume prune # 删除未被使用的数据卷 docker image prune # 删除 dangling 或所有未被使用的镜像
Docker をインストール中の状態に戻す
ここでの「インストール中のステータス」とは、Docker の関連構成ではなく、リソースの使用状況を指します。これも比較的一般的なユースケースで、例えばバグ調査のため、ある日クリーンなDocker環境で本番環境を自動復元(本番環境のバックアップデータを使用)する必要がある。何をする必要があるのか見てみましょう?
前に紹介した docker system prune --all --force --volumns コマンドを思い出してください。このコマンドを実行する前にシステム内のすべてのコンテナが停止している場合、このコマンドはすべてのリソースを削除します。さて、システム内のすべてのコンテナを停止する方法を考えてみましょう。
docker container stop コマンドは 1 つ以上のコンテナを停止できます。必要なのは、システム内で実行中のすべてのコンテナを一覧表示することだけです。 docker は停止したコンテナを再度停止することを気にしないので、単純かつ失礼になって、すべてのコンテナ (停止したコンテナを含む) を直接リストしてみましょう。
$ docker container ls -a -q
-a はすべてのコンテナを表示し、-q は数値のコンテナ ID のみを表示します。
次に、このコマンドの実行結果を docker コンテナ停止コマンドのパラメーターとして使用します。
$ docker container stop $(docker container ls -a -q)
docker 環境を復元するための完全なコマンドは次のとおりです。
$ docker container stop $(docker container ls -a -q) && docker system prune --all --force --volumns
前の prune コマンドと同様に、特定の種類のリソースを完全に削除することもできます。
コンテナの削除: docker container rm $(dockercontainer ls -a -q)
イメージの削除: docker image rm $(docker image ls -a -q)
データの削除 ボリューム: docker volume rm $(docker volume ls -q)
ネットワークの削除: docker network rm $(docker network ls -q)
シェル エイリアスの作成
上記のコマンドは完了できます。この作業は面倒ですが、シェルのエイリアス関数を使用すると、これらのコマンドの実行を簡素化できます。
alias docker-clean-unused='docker system prune --all --force --volumes'alias docker-clean-all='docker stop $(docker container ls -a -q) && docker system prune --all --force --volumes'
把上面的命令写入到用户的 ~/.bashrc 文件中就可以了!
执行一次清理任务:
总结
经常清理系统资源不仅能够让系统运行的更流畅,也利于我们把精力集中在相关的重点资源上面。所以建议大家能够使用相关的资源清理命令,让 docker 保持清爽和高效。
相关推荐:docker入门教程
以上がDocker によって占有されているリソースをクリーンアップする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。