日々常々

ふつうのプログラマがあたりまえにしたいこと。

DockerでTAGだけ<none>になってるのを消したかった

<none>:<none> を消すのは docker image prune とか、 docker rmi {IMAGE ID} でいいんですが、 hoge:<none> をどうしたもんかと。

見た目こんな感じです。

% docker images
REPOSITORY          TAG          IMAGE ID 
hoge                test         1c909cfb0b00
hoge                <none>       e7d92cdc71fe
alpine              latest       e7d92cdc71fe

何をどうしたらこの状況にできるのかよくわかりません。とりあえずなってました。再現方法わからない。<none>:<none> は簡単に作れるんですが……Dockerなにもわからない……。

docker rmi hoge:<none> とかやっても消えないし、docker image prune でも消えてくれないし、 docker rmi e7d92cdc71fe で消しちゃえば消えるんでしょうけど、このイメージ自体は alpine:latest とか他でも使ってるから消したくないし。別にイメージが容量を食ってるわけでもないので放置してもいいんですけど、消せるなら消したい。

とりあえず解決

リポジトリ名でタグを作ると <none> が消えました。

% docker tag e7d92cdc71fe hoge:latest
% docker images
REPOSITORY          TAG          IMAGE ID 
hoge                test         1c909cfb0b00
hoge                latest       e7d92cdc71fe
alpine              latest       e7d92cdc71fe

この後普通にrmiでお片付けできました。

% docker rmi hoge:latest
Untagged: hoge:latest
Untagged: hoge@sha256:xxxxx

よかったよかった。 やりたかったことこのログの通り、単にUntaggedなんですが、docker untagとかないしdocker tagにもなさげなんですよね…… 多分どこか掘ったらuntagするやり方見つかるんでしょうけども。