Docker rmi – 可以使用–force吗?
我对Docker来说比较陌生,最近我开始运行Ubuntu容器,并在几天后正常停止它(我没有看到它使用“docker ps”)。 当我试图删除使用Ubuntu的图像
docker rmi ubuntu
我得到了以下错误:
来自守护进程的错误响应:冲突:无法移除存储库引用“ubuntu”(必须强制) – 容器65c315b169b8正在使用其引用的映像747cb2d 60bbe
我可以使用“ – 强制”强制删除图像,
docker rmi ubuntu --force
还是有一个优雅/安全的方式来做到这一点?
默认情况下, docker ps
只会显示正在运行的容器。 你可以使用docker ps --all
来显示停止的。
然后,您可以先使用docker rm <IMAGE_ID>
删除容器
如果你想删除所有的容器,停止与否,你可以通过bash提示符来实现
$ docker rm $(docker ps -all -q)
-q开关只返回ID
如果你想优雅地做,你应该find是否有其他图像使用Ubuntu的。 无论如何,在你的情况下,你有一个与该图像相关的容器。
这是一个关于如何得到这个的示例脚本:
containerId=$( docker container ls -a | grep ubuntu | awk '{ print $1 }' ) docker container rm $containerId docker image rm ubuntu
Docker不会将图像数据复制到每个容器,所有运行图像的容器都只有一个指向文件系统部分的指针(带有各自容器的本地RW层)。 所以如果你在容器使用的时候删除了一个图像,那么你将会破坏容器并覆盖它所依赖的文件系统。
相反,只需先移除容器。 它可能会退出而不是运行,所以你可以做一个docker ps -a | grep $image_id
docker ps -a | grep $image_id
获取运行该特定图像ID的容器的快速列表,但首选列表将包含任何后代:
docker rm $(docker ps -aq --filter "ancestor=747cb2d60bbe")
然后你将能够运行你的docker rmi
命令。