我的一些服务器的磁盘使用率是 100%,所以我尝试删除未使用的 docker 镜像来获取一些磁盘空间。
除了一台服务器之外,docker image rm 命令运行良好。
但对于某个服务器,该命令不起作用。
USER@HOST:/home1:> docker rmi DOCKER_IMAGE_ID --force
该命令执行后没有任何反应,并且该命令不会退出。
我添加了-debug
选项,但还是一样,没有打印任何信息。
docker ps
命令运行良好。
我该如何解决这个问题?
或者,有没有办法通过找到相应的文件并运行来删除 docker 镜像rm SOME_FILE
?
答案1
对于图像,命令是docker rmi imagename/id
。
对于容器,命令是docker rm containername/id
。
答案2
如果它挂了,那要么是 docker 引擎或底层主机中的一个错误。
如果是 docker 引擎本身挂了,那么检查引擎的日志可能会有帮助。使用 systemd,你可以使用 journalctl 提取这些日志:
sudo journalctl -u docker
为了进一步调试 Go 堆栈,你可以强制输出堆栈跟踪:
sudo kill -SIGUSR1 $(pidof dockerd)
这些日志将被写入/var/run/docker/
。
如果 Linux 主机本身出现问题(例如驱动器故障),则检查中的日志/var/log
和输出dmesg
可以帮助找出潜在原因。
当然,最简单的答案就是先关闭它然后重新打开,然后使用以下命令重新启动 docker 引擎:
sudo systemctl restart docker
答案3
我曾经看到 docker 以这种方式挂起,而它应该失败并出现类似错误:
Error response from daemon: conflict: unable to remove repository reference "<image name>" (must force) - container <container_id> is using its referenced image <image_id>
尝试:docker rm <container_id>
如果您知道有容器使用该图像,或者docker container prune
(小心)删除所有已停止的容器,然后docker rmi <image_name>
再试一次。