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
答案 0 :(得分:85)
您可以尝试仅列出未标记的图片(没有标签的图片,或没有标签的标签):
docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'
但是,其他人可能需要其中一些未标记的图像。
I prefer removing only dangling images:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
正如我在2016年9月的“How to remove old and unused Docker images”中为docker 1.13+所提到的那样,您也可以执行image prune
command:
docker image prune
话虽如此,Janaka Bandara提及in the comments:
这确实 删除
<none>
- 为我标记的图片(例如foo/bar:<none>
);我必须使用docker images --digests
和docker rmi foo/bar@<digest>
Janaka从 How to Remove a Signed Image with a Tag 引用“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
诊断步骤
如果您使用
--digests=true
option (未标记的条目包含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
请注意保罗还提到了moby issue 18892:
在提取已签名的图片后,“
<none>
”输出中会有一个“额外”条目(标记为docker images
)。
这使得rmi
图像变得困难(您必须强制它,否则先删除正确标记的条目,或通过摘要删除。
答案 1 :(得分:15)
docker images | grep none | awk '{ print $3; }' | xargs docker rmi
你可以试试这个
答案 2 :(得分:11)
只需运行以下命令:
docker image prune --filter="dangling=true"
答案 3 :(得分:10)
docker image prune删除所有悬空图像(标记为none的图像)。 docker image prune -a还会删除没有使用它们的容器的任何图像。
悬空和未使用图像之间的区别在this stackoverflow thread中解释。
答案 4 :(得分:6)
new[]
答案 5 :(得分:3)
根据docker documentation,您只能使用列出未标记(悬挂)的图像
a |= (1 << 8); //not assign, just set bitmask.
然后将其重定向至$ docker images -f "dangling=true"
命令,
docker rmi
通知$ docker rmi $(docker images -f "dangling=true" -q) --force
参数仅显示容器的数字ID。
答案 6 :(得分:2)
100%的作品:alt+m
答案 7 :(得分:2)
我发现docker image prune -f
最有用,并且在日常工作中一直使用它,因此使用标签-f
不会提示您进行确认。更多详细信息here
答案 8 :(得分:2)
你可以去docker rmi $(docker images -f "dangling=true" -q)
。有关更多选项,请参阅images documentation。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 94870cda569b 4 seconds ago 673MB
python 2.7 320a06f42b5f 10 days ago 673MB
mysql latest e799c7f9ae9c 2 months ago 407MB
gcavalcante8808/semaphore latest 86e863e11461 2 months ago 537MB
redis latest e32ef7250bc1 2 months ago 184MB
rabbitmq 3.6.9-management 7e69e14cc496 2 months ago 179MB
rabbitmq 3.6.9 eb2e4968538a 2 months ago 179MB
jordan/rundeck latest 6d40b57b1572 2 months ago 660MB
rabbitmq 3.5.6-management dbfe8d18809a 19 months ago 304MB
$ docker rmi $(docker images --format '{{.ID}}' --filter=dangling=true)
Deleted: sha256:94870cda569b8cf5f42be25af107d464c993b4502a1472c1679bf2d213b6c0a6
答案 9 :(得分:1)
要删除悬空图像,请使用:
docker image rm $(docker images --format "{{.ID}}" --filter "dangling=true")
有关更详细的说明,请参阅我的回答:https://unix.stackexchange.com/a/445664/292327
答案 10 :(得分:1)
运行以下命令以使用docker rmi删除图像
docker images --filter "dangling=true"
答案 11 :(得分:1)
尝试此操作以查看带有标签<none>
的列表Docker映像ID
docker images -a | awk '/^<none>/ {print $3}'
,然后您可以删除所有带有标签<none>
的图像。这对我有用。
docker rmi $(docker images -a | awk '/^<none>/ {print $3}')
答案 12 :(得分:1)
使用以下内容删除具有none
作为存储库名称的图像:
docker rmi $(docker images | grep "^<none" | awk '{print $3}')
删除具有none
标记或存储库名称的图像:
docker rmi $(docker images | grep "none" | awk '{print $3}')
答案 13 :(得分:1)
您可以检查过滤器“悬挂”是否不再起作用
$ docker images -f “dangling=true” -q
Error response from daemon: Invalid filter 'dangling'
使用 docker system prune 删除悬空的图像
$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N]
您可以使用--force
而不提示您确认
$ docker system prune --force
答案 14 :(得分:1)
docker system prune
将解决问题,将其删除
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
但是请谨慎使用!
答案 15 :(得分:0)
删除所有退出的容器
docker rm $(docker container ls -a -f status=exited -q)
或根据模式移除容器
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
答案 16 :(得分:0)
这是tansadio答案的扩展:
如果遇到以下错误:
Error response from daemon: conflict: unable to delete <> (must be forced) - image is being used by stopped container <>
您可以使用--force
强制使用它:
docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
答案 17 :(得分:0)
全部
为Windows爱好者共享PowerShell命令(以防万一您没有bash,grep或awk)
(docker images) -like '*<none>*' | ForEach-Object {
$imageid=($_ -split "\s+")[2]
docker rmi -f $imageid
}
答案 18 :(得分:0)
要使用none
删除所有图像,我们必须确保已删除所有可以使用的停止容器
运行:
docker rm $(docker ps -a -q)
然后我们可以删除所有图像:
docker image prune
答案 19 :(得分:0)
以下操作将删除所有<none>
张图片
docker rmi $(docker images | grep none | awk '{print $3}')
您可以通过将docker rmi
更改为docker rmi -f
来强制删除,尽管我不建议这样做。
某些<none>
图片可能与其他图片相关,因此为了安全起见,请勿使用-f
标签。
答案 20 :(得分:0)
第一个解决方案:
先删除不用的容器。
docker ps -a | grep -v 向上 | awk '{ 打印 $1; }' | xargs 码头工人 rm
删除所有没有标签的容器。
泊坞窗图像 | grep 无 | awk '{ 打印 $3; }' | xargs 码头工人 rmi
第二种解决方案删除所有:
$ docker system prune -a
警告!这将删除:
您确定要继续吗? [是/否]
答案 21 :(得分:0)
docker rmi -f $(docker images -a | awk'NR> 1 && $ 2 ==“” {print $ 3}')
答案 22 :(得分:0)
简单明了
即使我花了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,这行在docker进程中是imp。
答案 23 :(得分:0)
以下命令对我有用。这只是简单的grep“”图片,并获取docker图片ID并删除了所有图片。只需执行简单的单个命令即可。
docker rmi $(docker images |grep "<none>"| awk '{print $3}')
答案 24 :(得分:0)
你可以在 docker 中使用这个命令:
docker image prune
对于所有容器:
docker container prune
答案 25 :(得分:0)
我为 Windows 找到了这个:
powershell -Command "docker rmi $(docker images -q -f dangling=true)"
参考: https://gist.github.com/sebagomez/b00bd9e3610abab55fefe3d69f3708ad
答案 26 :(得分:-1)
悬空的图像是先前构建和提取的重影,只需使用以下命令将其删除: docker rmi $(docker images -f“ dangling = true” -q)
答案 27 :(得分:-1)
尝试
docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}')
,虽然可能有更清洁的命令
更新了
答案 28 :(得分:-1)
只需使用ID删除图片:
# docker rmi 5e2dfc857e73 d053e988f23d ...
答案 29 :(得分:-3)
docker rmi $(docker images -a -q)
说明使用中的以下图像。我认为这个命令摆脱了不需要的图像。