【便利】docker pruneの使い方|実例付きで詳しく解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年8月)

✔当記事は以下の方向けに作られています

「docker pruneコマンドの具体的な機能が知りたい」

「docker pruneコマンドの正確な書き方を学びたい」

「docker pruneコマンドの事例を見て理解したい」

✔当記事で伝えること

  • docker pruneコマンドの基本的な使い方
  • docker pruneコマンドの正しい書き方とその活用法
  • docker pruneコマンドを使った実際の例

当記事では、docker pruneコマンドの基本知識から、実際の使い方、オプションを効果的に活用する方法までを、具体的に例を挙げて詳細に説明しています。

ぜひ最後までお読みいただき、docker pruneコマンドの理解を深めてください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Dockerのpruneを理解するための前提知識

Dockerについての理解を深め、その活用方法を学ぶことは今日の開発環境において非常に重要です。

ここでは、DockerとDocker Pruneの役割、その利点について紹介します。

  • Dockerとは
  • Docker Pruneの役割と利点

Dockerとは

Dockerは、開発からデプロイメントまでのワークフローを容易にするためのオープンソースのプラットフォームです。

Dockerにより、アプリケーションのコードやその環境を「コンテナ」という形でパッケージ化できます。

どの環境でも同じように動作することを保証できるのです。

しかしDockerを長期間にわたり使用していると、大量の不要なイメージやコンテナが蓄積され、必要な情報を探すのが難しくなることがあります。

Docker Pruneの役割

ここでDocker Pruneの出番です。

Docker Pruneは、未使用または不要になったDockerリソースを削除するコマンド

Docker Pruneの使用は、Dockerを活用する全ての開発者にとって必要不可欠なスキルです。

ストレージの節約だけでなく、適切なメンテナンスを通じて全体的なパフォーマンスも改善できます。

Docker Pruneについて

こちらでは、Docker Pruneの全体像について解説し、容量問題を解決するための具体的な方法についても説明します。

  • Docker Pruneの全体像
  • Docker Pruneと容量問題の解決方法

Docker Pruneの全体像

Docker Pruneは、未使用のDockerリソースを特定し、削除するためのコマンドセットです。

リソースには、以下のようなものが含まれます。

  • 未使用のイメージ
  • 停止したコンテナ
  • 未使用のボリューム
  • 未使用のネットワーク

これらの各項目に対して個別にPruneをおこなうことはもちろん、一括で実行することも可能です。

Docker Pruneと容量問題の解決方法

Dockerでは、未使用のリソースが蓄積するとストレージスペースが圧迫され、全体的なパフォーマンスが低下する可能性があります。

Docker Pruneを適切に使用することで、これらの問題を解決し、環境のパフォーマンスと効率性を維持できるのです。

例えば未使用のイメージや停止したコンテナを削除することで、ストレージスペースを大幅に節約することが可能です。

Docker Pruneの各要素について

こちらでは、Docker Pruneが操作する主要な要素について詳しく解説します。

イメージ、コンテナ、ボリューム、ネットワークの各要素の適切なプルーニング方法について学びましょう。

  • Dockerイメージの簡易削除規則
  • Dockerコンテナの適切なプルーニング方法
  • ボリュームとネットワークの調整

Dockerイメージの簡易削除規則

Dockerイメージの削除は以下のコマンドを用いて実施します。

docker image prune

未使用のDockerイメージを削除することで、ディスクスペースが節約できるでしょう。

以下が未使用のDockerイメージを削除するコマンドになります。

$ docker image prune -a

ここで、オプションの -a は全ての未使用のイメージを削除します。

コンテナに関連付けられていないイメージも含まれるなど、このコマンドを使用する前に、必要なイメージが削除されないよう注意が必要です。

Dockerコンテナの適切なプルーニング方法

Dockerコンテナの削除は、以下のコマンドでおこないます。

docker container prune

停止したコンテナを削除することで、不要なリソース使用を避けられます。

以下のコマンドは、停止したコンテナを削除するものです。

$ docker container prune

このコマンドは、現在停止しているコンテナのみを削除します。

運用中のコンテナは削除されません。

ボリュームとネットワークの調整

ボリュームとネットワークもまた、Docker Pruneの対象です。

以下のコマンドは、未使用のボリュームとネットワークを削除します。

$ docker volume prune
$ docker network prune
  • docker volume prune:任意のコンテナにアタッチされていない未使用のボリュームを削除
  • docker network prune:任意のコンテナに接続されていない未使用のネットワークを削除

これらのコマンドを適切に使用することで、Dockerの運用環境を最適化し、リソースの使用を最小限に抑えられます。

実際の使用方法:Docker Prune

こちらでは、Docker Pruneの実際の使用方法について詳しく解説します。

  • 注意事項とプルーニングの基本コマンド
  • コマンド毎の詳細解説と実践例
  • 24時間経過したコンテナと未使用レソースの削除方法

注意事項とプルーニングの基本コマンド

Docker Pruneを使用する前に、未使用のリソースのみが削除対象であることを理解しましょう。

削除される可能性のあるリソースを誤って削除しないよう、必要なデータがコンテナ、イメージ、ボリューム、またはネットワークに保存されていないことを確認してください。

以下のコマンドは、Docker Pruneの基本的な使用方法を示しています。

このコマンドは、未使用のコンテナ、ネットワーク、イメージ、ビルドキャッシュを削除します。

$ docker system prune

コマンド毎の詳細解説と実践例

docker system pruneコマンドは非常に便利ですが、特定のリソースのみを対象にしたい場合には各種pruneコマンドを使用しましょう。

以下に改めて各リソースの削除方法を示します。

コンテナの削除

$ docker container prune

イメージの削除

$ docker image prune

ボリュームの削除

$ docker volume prune

ネットワークの削除

$ docker network prune

24時間経過したコンテナと未使用レソースの削除方法

Docker Pruneを使用すると、24時間以上経過した未使用のコンテナやその他のリソースを削除できます。

以下のコマンドは、24時間以上前に作成され、かつ未使用のリソースを削除するものです。

$ docker system prune --filter "until=24h"
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

  Items to be pruned will be filtered with:
  - until=24h

Are you sure you want to continue? [y/N] y

削除対象は未使用のリソースのみで、使用中のリソースは削除されません。

また、--filterオプションを使用して特定の期間を指定することも可能です。

総合的なプルーニングの実行

次に、総合的なプルーニングの実行方法について説明します。

  • ボリュームだけのプルーニング方法
  • 一括プルーニングの実行とその指針

ボリュームだけのプルーニング方法

Docker Pruneは特定のリソースタイプに対しても実行できます。

例えば、使用していないボリュームのみを削除したい場合、次のコマンドを使用しましょう。

$ docker volume prune

未使用のボリュームのみを対象にし、その他のリソースは untouched に保ちます。

これは、特定のリソースのみを対象にしたいときに便利です。

一括プルーニングの実行とその指針

全ての未使用のリソースを一括で削除したい場合は、次のようにdocker system pruneコマンドを実行します。

$ docker system prune -a

-aオプションは”all”の略で、未使用のコンテナ、イメージ、ネットワーク、およびボリュームすべてを削除。

ただしこれには注意が必要で、削除は永続的で元に戻すことはできません。

したがって、データを失わないように、実行前に適切なバックアップと確認が必要です。

Docker Pruneの自動化とその手順

こちらでは、Docker Pruneの自動化について解説します。

  • 自動化の便利さとそのメリット
  • ステップバイステップ: Docker Pruneの自動化

自動化の便利さとそのメリット

Docker Pruneの自動化は、管理の手間を大幅に削減します。

毎日または特定の間隔で自動的に未使用のリソースを削除することで、ディスクスペースを効率的に利用し、パフォーマンスを維持できるでしょう。

また自動化によるメリットとして、人間のミスを防げることも挙げられます。

管理者が忘れて削除を実行しなかった場合や、誤って必要なリソースを削除してしまった場合などです。

自動化されたタスクは一貫した結果を提供し、これらの問題を防ぎます。

ステップバイステップ: Docker Pruneの自動化

Docker Pruneの自動化はcronを利用しておこないましょう。

以下の手順でDocker Pruneの自動化を実現できます。

crontabを開く

$ crontab -e

新しい行を作成し、以下のように入力

0 3 * * * /usr/bin/docker system prune -af --volumes

記述したら変更を保存し、crontabを閉じます。

以上で、毎日指定した時間にDocker Pruneが自動的に実行されるように設定されました。

自動化により、Docker環境をクリーンで効率的な状態に保つことが容易になります。

上級者が行う最適化とチューニングのヒント

Docker Pruneを活用する上でのさらなるステップとして、未使用のリソースを削除する前にそのリソースをアーカイブすることを検討してみてください。

これにより、何らかの理由で削除されたリソースが後で必要になった場合でも、アーカイブからリソースを復元できます。

以下が、ボリュームのアーカイブと復元の基本的なコマンドです。

アーカイブ

$ docker run --rm --volumes-from <コンテナ名> -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /path/to/volume

復元

$ docker run --rm --volumes-from <コンテナ名> -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

まとめ:Docker Pruneの実用的な活用

Docker Pruneは、未使用のリソースを削除するための強力なツールです。

長期間使うことで、以下のようなリソースは、システムのパフォーマンスを低下させ、重要なディスクスペースを占有します。

  • 一時的なコンテナ
  • 使用されていないイメージ
  • 取り残されたボリューム
  • 適切な状態に保たれていないネットワーク

Docker Pruneを定期的に実行することで、これらの問題を緩和し、Docker環境のパフォーマンスと効率を最適化できます。

さらに自動化の手順を学ぶことで、管理作業を大幅に軽減し、ヒューマンエラーを減らせるでしょう。

Docker Pruneの使用方法を理解し、適切に実践することで、あなたのDocker環境はより効率的でパフォーマンスが高まります。

当記事があなたのDocker環境管理の一助となれば幸いです。

タイトルとURLをコピーしました