Docker イメージを適切に削除する方法(`docker rmi` コマンド活用)

DockerBeginner
オンラインで実践に進む

はじめに

このチュートリアルでは、docker rmi コマンドを使用して Docker イメージを適切に削除する方法を説明します。Docker ユーザーの経験レベルに関わらず、イメージ削除の有効な戦略を理解することは、Docker 環境の管理とストレージの最適化に不可欠です。

Docker イメージの概要

Docker イメージは、Docker コンテナの基本的な構成要素です。イメージは、オペレーティングシステム、アプリケーションコード、依存関係など、Docker コンテナを作成するために必要な指示を含む、読み取り専用のテンプレートです。Docker イメージは、Docker Hub などのパブリックレジストリ、またはプライベートレジストリに保存されます。

Docker イメージについて理解するために、基本事項から始めましょう。

Docker イメージとは何か

Docker イメージは、アプリケーションの実行に必要なすべて (コード、ランタイム、システムツール、ライブラリ、設定) を含む、軽量でスタンドアロンの、実行可能なパッケージです。Docker イメージは、Dockerfile を使用して作成されます。Dockerfile は、イメージを構築するために必要なすべての命令を含むテキストドキュメントです。

Docker イメージの構成

Docker イメージは、複数のレイヤーで構成されます。各レイヤーは、イメージに変更を加えたものを表します。これらのレイヤーは積み重ねられ、コンテナがイメージから作成されると、コンテナはイメージの読み取り専用レイヤーを使用し、その上に読み取り書き込みレイヤーを追加します。

graph TD
    A[ベースイメージ] --> B[レイヤー 1]
    B --> C[レイヤー 2]
    C --> D[レイヤー 3]
    D --> E[Docker イメージ]

Docker イメージのプルとプッシュ

docker pull コマンドを使用して、レジストリから Docker イメージをプルできます。たとえば、最新の Ubuntu イメージをプルするには、次のように実行します。

docker pull ubuntu:latest

Docker イメージをレジストリにプッシュするには、まず、レジストリのアドレスとユーザー名でイメージにタグ付けする必要があります。その後、docker push コマンドを使用して、イメージをレジストリにアップロードできます。

docker tag my-image:latest myregistry.azurecr.io/my-image:latest
docker push myregistry.azurecr.io/my-image:latest

Docker イメージの基本を理解することで、独自の Docker ベースのアプリケーションの構築と管理を開始できます。

docker rmi による Docker イメージの削除

docker rmi コマンドは、ローカルシステムから 1 つ以上の Docker イメージを削除するために使用されます。Docker イメージは、特に同じイメージの複数のバージョンや未使用のイメージがある場合、かなりのディスク容量を消費するため、重要な操作です。

docker rmi コマンドの使用

Docker イメージを削除するには、docker rmi コマンドにイメージ ID またはイメージ名を入力します。

docker rmi image_name:tag
docker rmi image_id

たとえば、ubuntu:latest イメージを削除するには、次のように実行します。

docker rmi ubuntu:latest

複数のイメージの削除

複数のイメージを一度に削除するには、その ID または名前をスペースで区切って指定します。

docker rmi image1:tag image2:tag image3:tag
docker rmi image_id1 image_id2 image_id3

孤立イメージの削除

孤立イメージとは、タグ付けされておらず、どのコンテナとも関連付けられていないイメージです。すべての孤立イメージを削除するには、次のコマンドを使用します。

docker rmi $(docker images -f "dangling=true" -q)

このコマンドは、最初に docker images コマンドを使用してすべての孤立イメージを見つけ、次にそのイメージ ID を docker rmi コマンドに渡して削除します。

依存関係のあるイメージの削除

イメージに依存関係(子イメージや実行中のコンテナで使用されているイメージなど)がある場合、直接削除することはできません。依存関係のあるイメージを削除するか、イメージを使用しているコンテナを停止して削除する必要があります。

graph TD
    A[ベースイメージ] --> B[子イメージ 1]
    A --> C[子イメージ 2]
    B --> D[コンテナ 1]
    C --> E[コンテナ 2]

このシナリオでは、子イメージ (BC) を削除する前に、コンテナ (DE) を削除する必要があります。その後、ベースイメージ (A) を削除できます。

docker rmi コマンドを効果的に使用する方法を理解することで、Docker 環境をクリーンで効率的に保てます。

効果的なイメージ削除戦略

クリーンで効率的な Docker 環境を維持するために、Docker イメージを効果的に削除することは重要です。ここでは、Docker イメージを効果的に管理するためのいくつかの戦略を紹介します。

イメージの使用状況の監視

システム上の Docker イメージを定期的に監視して、未使用または古いイメージを特定します。docker images コマンドを使用して、システム上のすべてのイメージとそのサイズと作成日時を一覧表示できます。

docker images

これにより、システム上のイメージの概要が表示され、削除候補を特定するのに役立ちます。

自動クリーンアップスクリプトの使用

定期的に未使用または孤立イメージを自動的に削除するスクリプトを作成できます。以下は、使用できる例です。

#!/bin/bash

## 孤立イメージの削除
docker rmi $(docker images -f "dangling=true" -q)

## 30日以上前のイメージの削除
docker rmi $(docker images --filter "before=$(date -d '30 days ago' '+%Y-%m-%d')" -q)

このスクリプトは、cron などのツールを使用して定期的に実行するようにスケジュールできます。

イメージタグ付けの活用

Docker イメージを適切にタグ付けすると、管理と削除が容易になります。イメージの目的、バージョン、または環境を反映する意味のあるタグを使用します。これにより、イメージの特定のバージョンをより簡単に特定して削除できます。

Docker イメージのプルーニング

docker image prune コマンドを使用して、システムから未使用のイメージ(孤立および参照されていないイメージ)をすべて削除できます。これは、個々のイメージを手動で特定して削除する必要なく、Docker 環境をクリーンアップするための便利な方法です。

docker image prune

また、--filter オプションを使用して、イメージの年齢やサイズなどの特定の基準に基づいてイメージをプルーニングすることもできます。

docker image prune --filter "until=24h"

これにより、24 時間以上前のすべてのイメージが削除されます。

これらの効果的なイメージ削除戦略を実装することで、Docker 環境をクリーン、効率的、そして整理整頓された状態に保てます。

まとめ

このチュートリアルを終了すると、docker rmi コマンドを使用して Docker イメージを効果的に削除する方法を包括的に理解しているでしょう。イメージ削除のベストプラクティスを学び、Docker 環境が整理され、ストレージが最適化されていることを確認します。このスキルを習得することで、クリーンで効率的な Docker セットアップを維持し、アプリケーション開発とデプロイに集中できます。