root@server:~# docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 5e2dfc857e73 5 days ago 261.6 MB
<none> <none> d053e988f23d 5 days ago 261.6 MB
<none> <none> 1d5d4a2d89eb 5 days ago 261.6 MB
<none> <none> ea0d189fdb19 5 days ago 100.5 MB
<none> <none> 26c6175962b3 5 days ago 100.5 MB
<none> <none> 73d5cec4a0b3 5 days ago 100.5 MB
<none> <none> e19590e1bac1 5 days ago 100.5 MB
我试过以下几种方法:
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
以及以下几点:
docker rmi $(docker images -f "dangling=true" -q)
得到以下错误:
docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
你可以试着只列出没有标签的图片(没有标签的图片,或者有标签没有标签的图片):
docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'
但是,其他人可能需要其中一些未标记的图像。
我更喜欢删除悬挂的图像:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
正如我在2016年9月的“如何删除旧的和未使用的docker镜像”中提到的,你也可以执行image prune命令:
docker image prune
tansadio建议:
docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi --force
但是,正如BryanK所指出的:确保您的存储库名称(或其中一个标记名称)不具有字符'none'序列,否则它们将匹配正则表达式并被删除。
话虽如此,Janaka Bandara在评论中提到:
这没有删除<none>标记的图像为我(例如foo/bar:<none>);我不得不使用docker图像-摘要和docker rmi foo/bar@<文摘>
Janaka引用了Paul V. Novarese的“如何删除带标签的签名图像”:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pvnovarese/mprime latest 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> 459769dbc7a1 5 days ago 4.461 MB
诊断步骤
如果你使用——digest =true选项(未标记的条目具有Docker Content Trust签名摘要),你可以看到这两个条目的区别:
# docker images --digests=true
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
pvnovarese/mprime latest <none> 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00 459769dbc7a1 5 days ago
注意保罗也提到了莫比鱼18892年的问题:
在抽取一个签名图像后,在“docker images”输出中有一个“额外”条目(带有标签<none>)。
这使得rmi图像变得很困难(您必须强制执行,否则首先删除正确标记的条目,或者通过摘要删除。
它简单明了,
我花了3天时间才理解这个简单明了的错误。
docker映像未成功构建
Step 7/13 : COPY jupyter_notebook_config.py /root/.jupyter/
---> bf29ce6fe6dc
Step 8/13 : COPY notebooks /notebooks
COPY failed: stat /var/lib/docker/tmp/docker-builder776981166/notebooks: no such file or directory
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> bf29ce6fe6dc 9 seconds ago 1.27GB
ubuntu 16.04 a51debf7e1eb 3 weeks ago 116MB
然后我从Dockerfile中删除了第8行,这次成功了。
Successfully built b6724370f8ca
Successfully tagged dem:expo
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker run -it -p 8888:8888 dem:expo
[I 06:11:38.984 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:11:39.011 NotebookApp] Serving notebooks from local directory: /
[I 06:11:39.011 NotebookApp] The Jupyter Notebook is running at:
[I 06:11:39.011 NotebookApp] http://(296d81166725 or 127.0.0.1):8888/?token=496feb282ef749c05277ef57a51e8a56fedb1c6b337b9f92
它说成功标记dem:expo,这一行是imp在docker进程。