多克移除 < none > TAG 图像

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
261544 次浏览

试一试

< p > docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}') ,而可能有更干净的命令

更新

docker rmi $(docker images -a -q)

在使用的地方说明以下图像。我认为这个命令可以去除不需要的图像。

你可以试着只列出没有标签的图片(没有标签的图片,或者有标签没有标签的图片):

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月的“__abc1”中提到的,对于docker 1.13+,你也可以执行image prune命令:

docker image prune

tansadio 建议:

docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi --force

但是,正如BryanK所指出的:确保您的存储库名称(或其中一个标记名称)不具有'none'字符序列,否则这些字符将匹配正则表达式并被删除。


也就是说,加纳克Bandara提到了在评论中:

这确实为我删除了__abc0标记的图像(例如foo/bar:<none>);我必须使用docker images --digestsdocker rmi foo/bar@<digest>

Janaka references "如何删除带有标签的签名图像"从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内容信任签名摘要),你可以看到这两个条目的区别:

# 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

注意Paul也提到了莫比18892期:

在拉出签名图像后,会有一个"extra"条目(带有标签<none>)在"docker images"输出。
这使得很难rmi图像(你必须强制它,否则首先删除正确标记的条目,或通过摘要删除

使用以下方法删除带有none作为存储库名称的映像:

docker rmi $(docker images | grep "^<none" | awk '{print $3}')

删除带有none标记或存储库名称的图像:

docker rmi $(docker images | grep "none" | awk '{print $3}')

只需使用它们的id删除图像:

# docker rmi 5e2dfc857e73 d053e988f23d ...

你可以去docker rmi $(docker images -f "dangling=true" -q)。更多选项请参见图像文档

$ 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

Docker映像修剪删除所有悬空图像(那些没有标签的图像)。Docker image prune -a也会删除任何没有容器使用它们的映像。

悬垂图像和未使用图像之间的区别在这个stackoverflow线程中解释。

docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi

您可以简单地尝试一下

要删除悬空图像,请使用:

docker image rm $(docker images --format "\{\{.ID}}" --filter "dangling=true")

请参考我的回答在这里更详细的描述:https://unix.stackexchange.com/a/445664/292327

我发现docker image prune -f最有用,我在日常工作中一直使用它,使用标记-f不会提示确认。更多细节在这里

下面的命令对我有用。这只是简单的grep“”图像,并获得docker图像id和删除所有图像。简单的单一命令,因为它必须。

docker rmi $(docker images |grep "<none>"| awk '{print $3}')

它简单明了,

我花了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进程。

根据码头工人的文档,你只能列出未标记的(悬空)图像

$ docker images -f "dangling=true"

并像这样将它们重定向到docker rmi命令:

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

注意-q参数只显示容器的数字id。

这是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

docker rmi -f $(docker images -a|awk 'NR > 1 &&$2 == ""{打印$3}')

悬垂的图像是来自之前构建和拖动的幽灵,只需删除它们: Docker rmi $(Docker images -f " hanging =true" -q) . (Docker images -f "悬挂=true" -q

你可以检查滤镜“悬挂”不再工作

$ docker images -f “dangling=true” -q
Error response from daemon: Invalid filter 'dangling'

使用Docker系统修剪删除悬空图像

$ 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

docker system prune将做的把戏,它删除

- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache

但是要小心使用它!

下面将删除所有<none>图像

docker rmi $(docker images | grep none | awk '{print $3}')

你可以通过将docker rmi更改为docker rmi -f来强制删除,尽管我不建议这样做。

一些<none>图像可能与其他图像相关,所以为了安全起见,不要使用-f标记。

要用none删除所有图像,我们必须确保我们删除了它们可以使用的所有停止的容器 运行:< / p >
docker rm $(docker ps -a -q)

然后我们可以删除所有图像:

docker image prune

所有

为windows爱好者共享PowerShell命令(以防你没有bash, grep或awk)

(docker images) -like '*<none>*' | ForEach-Object {
$imageid=($_ -split "\s+")[2]
docker rmi -f $imageid
}

只需执行以下命令:

docker image prune --filter="dangling=true"
docker rmi --force $(docker images -q --filter "dangling=true")

运行以下命令使用码头工人rmi删除映像

docker images --filter "dangling=true"

移除所有退出的容器

docker rm $(docker container ls -a -f status=exited -q)

或者根据模式移除容器

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

试试这个来查看带有<none>标记的列表docker图像ID

docker images -a | awk '/^<none>/ {print $3}'

然后你可以删除所有带有<none>标签的图像。这对我很管用。

docker rmi $(docker images -a | awk '/^<none>/ {print $3}')

100%工作:docker images | grep none | awk '{print $3}' | xargs docker rmi -f

第一个解决方案:

  1. 先删除不使用的容器。

    docker ps -a | grep -v Up | awk '{ print $1; }' | xargs docker rm
    
  2. 删除所有没有标签的容器。

    docker images | grep none | awk '{ print $3; }' | xargs docker rmi
    

第二种解决方案删除所有:

$ docker system prune -a




WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache


Are you sure you want to continue? [y/N]

你可以在docker中使用这个推荐:

docker image prune

对于所有容器:

docker container prune

我在windows上找到了这个:

powershell -Command "docker rmi $(docker images -q -f dangling=true)"
< p >参考: https://gist.github.com/sebagomez/b00bd9e3610abab55fefe3d69f3708ad < / p >

删除悬空(<none>)图像的最简单的解决方案应该是:

docker image prune

你可以选择添加--force-f来禁用提示符。

唯一能帮到我的就是

docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force

我有两张图片。这些文件也比较大,只有160MB,我不想要。

我试过docker images prune,但它没有帮助。

< p > docker images | grep none | awk '{ print $3; }' | xargs docker rmi 该命令返回如下信息:

Error response from daemon: conflict: 0d1227b90e3a cannot be deleted (must be forced) - image is being used by stopped container c2c01a8c0cc9. Error response from daemon: Conflict: 791026064837 cannot be deleted (must be forced) - image used by stopped container 53dee16ceb19.

还有一些容器需要这些图像。

使用docker container ls -a | grep "c2c01a8c0cc9"我可以检查它是哪个依赖项。

:

docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force

我现在已经删除了这些图像。

因为我不再需要这个容器,所以我用:docker container rm <container_name>删除了它

这对我来说很管用

docker image rm -f $(docker images -f dangling=true -q)

使用Docker Desktop for Windows,您可以摆脱悬垂的图像

docker image prune

用力量修剪所有图像将解决您的问题

docker image prune -a --force

docker image rm $(docker images | grep none)

Docker容器修剪首先删除所有停止的容器,然后Docker图像修剪删除所有悬空图像。

docker container prune
docker image prune