docker中删除p_w_picpaths的命令是docker rmi
,但有时候执行此命令并不能删除p_w_picpaths
docker@boot2docker:~$ docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE php latest d71bada8846a 8 days ago 489.8 MB hello-world latest f1d956dc5945 2 weeks ago 967 B docker@boot2docker:~$ docker rmi f1d956dc5945 Error response from daemon: Conflict, cannot delete f1d956dc5945 because the container 3e3f017a5df4 is using it, use -f to force Error: failed to remove p_w_picpaths: [f1d956dc5945]
可以看出,p_w_picpath并没有被删除,而且报错被占用,无法删除
查看docker的帮助会发现有两个与删除有关的命令rm
和rmi
rm Remove one or more containers
rmi Remove one or more p_w_picpaths
这里有两个不同的单词,p_w_picpaths和container。其中p_w_picpaths很好理解,跟平常使用的虚拟机的镜像一个意思,相当于一个模版,而container则是p_w_picpaths运行时的的状态。docker对于运行过的p_w_picpath都保留一个状态(container),可以使用命令docker ps
来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a
来查看。 如果你退出了一个container而忘记保存其中的数据,你可以使用docker ps -a
来找到对应的运行过的container使用docker commit
命令将其保存为p_w_picpath然后运行。
回到之前的问题,由于p_w_picpath被某个container引用(拿来运行),如果不将这个引用的container销毁(删除),那p_w_picpath肯定是不能被删除。
所以想要删除运行过的p_w_picpaths必须首先删除它的container。继续来看刚才的例子,
docker@boot2docker:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e3f017a5df4 hello-world:latest "/bin/bash" 2 weeks ago Created determined_newton 36fca46be557 hello-world "/hello" 2 weeks ago Exited (0) 2 weeks ago clever_bell
可以看出f1d956dc5945的p_w_picpath被3e3f017a5df4和36fca46be557的container使用着,所以必须首先删除该container
[yaxin@ubox ~]$docker rm 117843ade696 Error: container_delete: Impossible to remove a running container, please stop it first2014/03/22 16:36:44 Error: failed to remove one or more containers
这个时候删除镜像可能还会出现错误,比如:
Error: container_delete: Impossible to remove a running container, please stop it first2014/03/22 16:36:44 Error: failed to remove one or more containers
这是因为该container正在运行中(运行docker ps
查看),先将其关闭
docker stop CONTAINER ID(具体的值)
然后再删除镜像,就会发现成功
docker@boot2docker:~$ docker rmi f1d956dc5945 Untagged: hello-world:latest Deleted: f1d956dc5945042a7aa18067346f1c2f1b47f39590a53f23e009600d5a9b3f49 Deleted: d59cd4c39e502ebb7eabe6b49eb0b5e19d38dede67540c51a27b5426c0976f4e docker@boot2docker:~$ docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE php latest d71bada8846a 8 days ago 489.8 MB
可以看出,p_w_picpath已经被删除。
总结:删除镜像之前,要确保该镜像没有正在运行(可以通过命令:docker ps 来查看),以及运行过被保存记录全部删除(可以通过命令:docker ps -a )
转载于:https://blog.51cto.com/liuqh/1772777