UbuntuでDockerの容量を削減する具体的な方法を解説してます

UbuntuでDockerの容量を削減する具体的な方法を解説してます

UbuntuでDockerを長期間運用していると、イメージやコンテナ、ボリューム、ログファイルなどが蓄積し、ディスク容量を圧迫することがあります。特に「No space left on device」が発生した場合は、Docker関連の不要データを整理することで大幅に空き容量を確保できることがあります。本記事では、UbuntuでDockerの容量を削減する具体的な方法を解説します。

現在のDocker使用量を確認する

まずはDockerがどの程度の容量を使用しているか確認します。

docker system df

実行例

どの項目が容量を消費しているか把握できます。

未使用コンテナを削除する

停止済みコンテナは不要であれば削除できます。

確認

docker ps -a

停止済みコンテナを削除

docker container prune

確認メッセージを省略する場合

docker container prune -f

使用していないコンテナ分の容量を回収できます。

未使用イメージを削除する

利用していないDockerイメージは容量を多く消費します。

未使用イメージ削除

docker image prune

すべての未使用イメージを削除

docker image prune -a

注意点として、「-a」を付けると現在利用中でないイメージは削除されるため、再利用時に再ダウンロードが必要になります。

未使用ボリュームを削除する

Dockerボリュームはデータ保持のために利用されます。

一覧確認

docker volume ls

未使用ボリューム削除

docker volume prune

強制実行

docker volume prune -f

データベースなど重要なデータが含まれていないか事前に確認してください。

ビルドキャッシュを削除する

Docker Buildを繰り返している環境ではキャッシュが肥大化します。

削除

docker builder prune

すべて削除

docker builder prune -a

CI/CD環境では数GB以上削減できる場合があります。

不要なリソースをまとめて削除する

未使用リソースを一括で削除できます。

docker system prune

ボリュームも含めて削除

docker system prune -a --volumes

実行例

Deleted Containers:
Deleted Images:
Deleted Volumes:

非常に強力なコマンドのため、本番環境では内容を十分確認してから実行してください。

Dockerログを削除する

Dockerログは肥大化しやすい原因の一つです。

ログファイル検索

sudo find /var/lib/docker -name "*-json.log" -exec ls -lh {} \;

ログパス確認

docker inspect コンテナID | grep LogPath

ログ内容を空にする

sudo truncate -s 0 ログファイルのパス

sudo truncate -s 0 /var/lib/docker/containers/xxxxxxxx/xxxxxxxx-json.log

ログファイル自体は残したまま容量を削減できます。

ログローテーションを設定する

今後の肥大化防止も重要です。

設定ファイル編集

sudo nano /etc/docker/daemon.json

設定例

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  }
}

Docker再起動

sudo systemctl restart docker

最大50MBまで自動ローテーションされます。

Dockerの保存場所を確認する

Dockerデータディレクトリを確認します。

docker info | grep "Docker Root Dir"

Docker Root Dir: /var/lib/docker

別ディスクへ移行している場合は、その保存先を確認して容量調査を行います。

ディレクトリごとの容量を確認する

Docker内部のどこが肥大化しているか調査します。

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

サイズ順表示

sudo du -h /var/lib/docker --max-depth=1 | sort -rh

確認対象

・containers

・overlay2

・volumes

・image

・buildkit

特に「overlay2」が大きい場合は不要イメージの削除が効果的です。

削除後の容量を確認する

作業後は空き容量を確認します。

Docker使用量

docker system df

ディスク使用量

df -h

削減効果を確認し、十分な空き容量を確保できているか確認します。

まとめ

UbuntuでDockerの容量を削減する場合は、まず「docker system df」で使用状況を確認し、不要なコンテナ、イメージ、ボリューム、ビルドキャッシュを整理することが重要です。

また、Dockerログの肥大化も容量不足の大きな原因となるため、ログローテーション設定を行い、定期的にメンテナンスすることで安定した運用を実現できます。特に「docker system prune -a –volumes」は大きな効果がありますが、重要なデータを削除しないよう十分注意して実行しましょう。

・Docker公式ドキュメント(Docker system prune)
https://docs.docker.com/reference/cli/docker/system/prune/

・Docker公式ドキュメント(Docker system df)
https://docs.docker.com/reference/cli/docker/system/df/

・Docker公式ドキュメント(Docker image prune)
https://docs.docker.com/reference/cli/docker/image/prune/

・Docker公式ドキュメント(Docker container prune)
https://docs.docker.com/reference/cli/docker/container/prune/

・Docker公式ドキュメント(Docker volume prune)
https://docs.docker.com/reference/cli/docker/volume/prune/

・Docker公式ドキュメント(Configure logging drivers)
https://docs.docker.com/engine/logging/configure/