docker rmiコマンドの使い方(実例で解説)

Docker
Docker公式ロゴ3b
©2020 Docker Inc. All rights reserved

 本記事はDocker ver19.03.10の環境で確認しています。

 このコマンドは、Dockerホスト内に格納されているDockerイメージを削除することが出来ます。

 Dockerイメージに付与したタグの削除を行う場合にも使用します。

docker rmiコマンドのフォーマットとオプション

フォーマット

docker rmi [オプション] 削除対象Dockerイメージ [ 削除対象Dockerイメージ . . .]

主なオプション一覧

オプション概説
-f, --force指定したDockerイメージを強制的に削除します
--no-pruneタグ付けされていない親イメージを削除しません

コマンド例

$ docker rmi ubuntu
$ docker rmi ubuntu:18.04

docker rmiコマンドの主な使い方

 以下で実例をまじえたコマンドの使い方を解説していきたいと思います。

基本事項の解説

 docker rmiは、Dockerホスト内の不要になったDockerイメージを削除するコマンドです。

 スペース区切りで複数のDockerイメージを並べて記述することで、一度に削除することも可能です。

 なお、Dockerイメージに複数のタグが付けられている場合は、指定したタグのみが削除され、Dockerイメージ自体は削除されません。

 Dockerイメージに複数のタグ付けがされておらず、Dockerイメージ名とDocker IDが1対1である場合のみ、指定したDockerイメージが削除されます。

 ただし、Dockerイメージに複数のタグが付けられている場合でも、強制削除オプションである「-f」を付けて実行することで一度に全て削除することができます。

 起動中のコンテナが使用しているDockerイメージは削除できません

指定したDockerイメージを削除する

 Dockerホスト内に、以下のDockerイメージがあります。(タグ名を省略した場合はデフォルトでlatestを指定したことになります)

$ docker images ubuntu
REPOSITORY   TAG     IMAGE ID      CREATED       SIZE
ubuntu       latest  104bec311bcd  2 days ago    73.9MB

 このDockerイメージをdocker rmiコマンドで削除してみます。

$ docker rmi ubuntu

 コマンド実行後、以下のような内容が出力されます。

Untagged: ubuntu:latest
Untagged: ubuntu@sha256:7a64bc9c8843b0a8c8b8a7e4715b7615e4e1b0d8ca3c7e7a76ec8250899c397a
Deleted: sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee
Deleted: sha256:0683de2821778aa9546bf3d3e6944df779daba1582631b7ea3517bb36f9e4007

 「Deleted:」の行が2行出力されておりますが、これは削除したubuntuのDockerイメージが2個のイメージレイヤで構成されていたからです。

 docker imagesコマンドで、ubuntuのDockerイメージが消えていることを確認します。

$ docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE

 先ほど表示されていたubuntuのDockerイメージが表示されなくなりました。

イメージIDを指定してDockerイメージを削除する

 先ほどはDockerイメージ名を指定して削除しましたが、イメージIDを指定して削除することも可能です。

 先ほどを同じubuntuのDockerイメージを、今度はイメージIDを指定して削除してみます。

$ docker images ubuntu
REPOSITORY   TAG     IMAGE ID      CREATED     SIZE
ubuntu       latest  104bec311bcd  2 days ago  73.9MB

 イメージIDは「104bec311bcd」ですので、これを指定して削除します。

$ docker rmi 104bec311bcd

 コマンド実行後、以下のような内容が出力されます。

Untagged: ubuntu:latest
Untagged: ubuntu@sha256:7a64bc9c8843b0a8c8b8a7e4715b7615e4e1b0d8ca3c7e7a76ec8250899c397a
Deleted: sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee
Deleted: sha256:0683de2821778aa9546bf3d3e6944df779daba1582631b7ea3517bb36f9e4007

 docker imagesコマンドで確認します。

$ docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE

 削除されていることが確認できました。

Dockerイメージに付与されているタグを削除する

 以下のように、ubuntuのDockerイメージubuntu:latestと、「test」タグが付与されているubuntu:testの2つが格納されてます。

$ docker images ubuntu
REPOSITORY   TAG      IMAGE ID      CREATED     SIZE
ubuntu       latest   104bec311bcd  2 days ago  128.9 MB
ubuntu       test     104bec311bcd  2 days ago  128.9 MB

 この2つのDockerイメージは「IMAGE ID」が同一ですので、物理的には同じDockerイメージです。

 タグとは、Dockerイメージに付けられた別名のことを指します。

 docker tagコマンドに関しましては別記事「docker tagコマンドの使い方(実例で解説)」をご参照下さい。

 では、ubuntu:testの方を削除してみたいと思います。以下のコマンドを実行します。

$ docker rmi ubuntu:test

 コマンド実行後、以下のように出力されます。

Untagged: ubuntu:test

 これは、ubuntu:testのタグが削除されたことを示してます。

 docker imagesコマンドで確認してみます。

$ docker images ubuntu
REPOSITORY   TAG      IMAGE ID      CREATED     SIZE
ubuntu       latest   104bec311bcd  2 days ago  128.9 MB

 先ほどは存在していたubuntu:testが消えていることが確認できました。

デフォルトでは削除出来ない複数のタグが付与されているDockerイメージを強制削除する

 以下のように3つのタグ付けされているDockerイメージがあります。

$ docker images ubuntu
REPOSITORY  TAG     IMAGE ID      CREATED     SIZE
ubuntu      latest  104bec311bcd  2 days ago  128.9 MB
ubuntu      test    104bec311bcd  2 days ago  128.9 MB
ubuntu      test2   104bec311bcd  2 days ago  128.9 MB

 「IMAGE ID」が同一ですので、3つとも同じDockerイメージであることが解ります。

 仮に、このIMAGE IDが「104bec311bcd」のDockerイメージが不要になって、3つとも削除したいとします。

 以下のようにdocker rmiコマンドを3回実行すれば可能であることは、直ぐお分かりだとおもいます。

$ docker rmi ubuntu:latest
$ docker rmi ubuntu:test
$ docker rmi ubuntu:test2

 もしくは、以下のように3つ並べて記述しても削除可能です。

$ docker rmi ubuntu:test2 ubuntu:test ubuntu:latest

 しかし、イメージ一覧内から削除対象のDockerイメージ名を全部選択するのは煩雑なので、「IMAGE ID」を指定して削除することが出来れば、安全且つ簡単に削除できそうですね。

 ではやってみましょう。

$ docker rmi 104bec311bcd

 残念ながら以下のようなエラーが出てしまいます。

Error response from daemon: conflict: unable to delete 104bec311bcd (must be forced)
 - image is referenced in one or more repositories

 複数から参照されているから削除できない旨のメッセージが出力されました。

 docker rmiコマンドは、デフォルトでは、複数個タグ付けされているDockerイメージを、イメージIDを使って削除することは出来ません。

 この場合は、「-f」オプションを使用して、強制的に削除します。

$ docker rmi -f 104bec311bcd

 コマンド実行後は、以下のような内容が出力されました。

Untagged: ubuntu:latest
Untagged: ubuntu:test
Untagged: ubuntu:test2
Untagged: ubuntu@sha256:7a64bc9c8843b0a8c8b8a7e4715b7615e4e1b0d8ca3c7e7a76ec8250899c397a
Deleted: sha256:104bec311bcdfc882ea08fdd4f5417ecfb1976adea5a0c237e129c728cb7eada
Deleted: sha256:f086cebe1dd257beedaa235e4eef280f603273b4c15cbe6db929ab64f100c302
Deleted: sha256:84cfefd72f9a8be0b92adfb93664e9bc8d740829152f1ab76b2a8393d56d8db8
Deleted: sha256:f7309529402984109c74a95ee5d68c0a5aa57241070890a09c76be48a8cd773f
Deleted: sha256:23f1e9516742d68eaa2439dd50693bf7294fcd64d69d9643e51a4be64aa0b97c
Deleted: sha256:32d75bc97c4173417b54eb2a417ea867637c3014dc1b0dd550f11ab490cbb09f

 docker imagesコマンドで存在確認を行います。

$ docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE

 削除されてます。

 これは、docker rmiコマンドに、削除したいDockerイメージを並べて記述して実行した時と同じ結果になります。

おわりに

  以上でdocker rmiコマンドの紹介を終わります。

 ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです!

 他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(CE対応版)(オリジナルな実例付き)」をご参照ください。

 ご訪問ありがとうございました!

コメント

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