我对Docker很新,我最近开始运行ubuntu容器,并在几天后优雅地停止它(我没有看到它使用" docker ps")。当我尝试使用
删除ubuntu图像时docker rmi ubuntu
我收到以下错误:
来自守护程序的错误响应:冲突:无法删除存储库引用" ubuntu" (必须强制) - 容器65c315b169b8正在使用其引用的图像747cb2d 60bbe
我可以使用" - force"强行删除图像,
docker rmi ubuntu --force
或者有一种优雅/更安全的方式吗?
答案 0 :(得分:4)
默认情况下,docker ps
仅显示正在运行的容器。您可以使用docker ps --all
显示已停止的内容。
然后,您可以先使用docker rm <CONTAINER_ID>
如果要删除所有容器,无论是否已停止,都可以使用
从bash提示符中实现此目的$ docker rm $(docker ps -all -q)
-q开关仅返回ID
*编辑不允许一个字符编辑,所以在这里你去
$ docker rm $(docker ps --all -q)
答案 1 :(得分:3)
由于其他所有人似乎都不愿意测试但愿意宣讲,所以我决定自己测试一下:
docker rmi --force <name>
docker rmi --force <ID>
删除图像,因为docker责备了“正在运行容器922a12161de6使用图像” 结果是:
docker rmi <ID>
或docker images prune
(没有-a
的话,它只会删除“悬挂”的图像,即不包括未使用的图像)。 因此答案是“是的,但是如果您希望这样做,它将不会删除容器”,但是现在您知道了原因。
我不满意其他大多数答案如何告诉您找到正在运行的容器,因为它们似乎在说“列出所有图像”-为什么?您正在尝试删除特定图像。
Stefano的答案更准确,但是需要一些调整:
imageName=ubuntu
containerIds=$(docker ps -a | grep "$imageName" | awk '{ print $1 }')
docker stop $containerIds
docker rm $containerIds
docker rmi "$imageName"
基本上,我为图像naem添加了一个变量和一个停止步骤。
答案 2 :(得分:1)
如果你想优雅地做,你应该找到使用ubuntu的其他图像。在你的情况下,你有一个与该图像相关的容器。
以下是有关如何获取此内容的示例脚本:
containerId=$( docker container ls -a | grep ubuntu | awk '{ print $1 }' )
docker container rm $containerId
docker image rm ubuntu
答案 3 :(得分:1)
Docker不会将图像数据复制到每个容器,运行图像的所有容器都有一个指向文件系统部分的只读指针(各个容器都有自己的本地RW层)。因此,如果在容器使用时删除图像,则会破坏容器并覆盖它所依赖的文件系统。
相反,只需先移除容器即可。它可能会退出而不是运行,因此您可以使用docker ps -a | grep $image_id
来快速列出运行该特定图像ID的容器,但首选列表将包含任何后代:
docker rm $(docker ps -aq --filter "ancestor=747cb2d60bbe")
然后您就可以运行docker rmi
命令。
答案 4 :(得分:1)
如果要删除所有未使用的映像,可以尝试使用docker映像提供的prune选项。
https://docs.docker.com/engine/reference/commandline/image_prune/#usage
docker image prune -a
答案 5 :(得分:1)
这些是 docker 查看和删除内容的基本有用命令。
查看所有 docker 镜像:docker image ls
查看 docker 容器:docker ps
停止 docker 容器:docker stop <container name>
移除 docker 容器:docker rm <container name>
删除泊坞窗图像:docker rmi image <image name>
删除除当前镜像之外的 Docker 镜像 - docker image prune -a
答案 6 :(得分:0)
删除所有容器并在所有图像之后赢得一些空间!
$ docker rm $(docker ps -all -q)
$ docker rmi $(docker image ls -q)
答案 7 :(得分:0)
何时删除docker映像
因此,如果您可以访问互联网并且遇到磁盘空间问题,则可以强制删除图像
为什么会出现错误:
Docker认为有一个docker-当前已停止-正在使用此映像。如果删除此已停止的docker,则“ docker rmi”将在没有强制的情况下工作