正常删除无用的镜像
$ docker images |grep none
$ docker rmi <IMAGE ID> #删除
$ docker rmi -f <IMAGE ID> #强制删除
若以上方法不能删除镜像,且命令执行卡住无输出
$ docker ps -a #列出所有的容器
$ docker rm <CONTAINER ID> #删除status为Exited的容器
#删除动作卡住
#docker默认目录:/var/lib/docker
#所有docker容器的信息都挂载在/var/lib/docker/containers目录下
#通过【CONTAINER_ID】找到该假死服务的目录
$ ll /var/lib/docker/containers | grep 【CONTAINER_ID】
$ cd /var/lib/docker/containers
$ rm -rf <目录名>
#这里删除可能会报下面的错误,因为你的容器还挂载了其他目录,信息如下:
rm: 无法删除"/var/lib/docker/containers/目录名/secrets": 设备或资源忙,无法删除"/var/lib/docker/containers/目录名/shm": 设备或资源忙
#这个时候查一下容器对应的挂载目录
$ cat /proc/mounts |grep "docker" |grep "【CONTAINER_ID】"
#然后先卸载
$ umount /data/sys/var/docker/containers/挂载目录/shm
#如果这一步 unmout 不了,可以尝试找到使用该目录的进程
$ lsof |grep "挂载目录"
$ps -ef | grep【CONTAINER_ID】
#如果有相关进程,记录相关的进程号直接 kill -9 进程号
#这个时候再重新执行删除目录命令
$ ll /var/lib/docker/containers | grep 【CONTAINER_ID】
$ cd /var/lib/docker/containers
$ rm -rf <目录名>
这个时候就可以删掉了
再次查看status为Exited的容器
$ docker ps -a|grep Exited #此时容器已消失
$ docker rmi <IMAGE ID>
$ docker images |grep none #此时为none的镜像也被删除了
网友评论