Docker不杀死容器

时间:2020-11-10 11:43:57

标签: docker

我正在尝试使用以下命令杀死我的Docker容器:

$ docker container kill $(docker ps -q)

但是,容器没有响应。

我可以使用以下方式登录它们:

$ docker exec -it container_id bash

但是终端中的所有命令都将挂起。

有趣的是,该过程似乎也不存在。我得到了具有进程ID的正在运行的容器的列表,如下所示:

$ for i in $(docker container ls --format "{{.ID}}"); do docker inspect -f '{{.State.Pid}} {{.Name}}' $i; done
12821 /brave_carson
12661 /trusting_hoover0
12617 /peaceful_franklin
12534 /frosty_volhard
12702 /zealous_sammet
12678 /flamboyant_jang
12690 /dreamy_driscoll

当我尝试用kill -9 pid杀死它时,出现错误:

$ kill -9 12821
-bash: kill: (12821) - No such process

这很不寻常。我该如何解决?我宁愿不要重启docker,除非它是最后一个也是唯一的选择。

2 个答案:

答案 0 :(得分:1)

如果杀死该容器,则无法对其执行。容器必须正在运行才能使exec正常工作(您应该从中得到一条错误消息)。

当容器未运行时,不应有任何进程。但是,docker中的容器定义(包括日志和对容器文件系统的更改)将一直保留,直到您使用docker container rm(与docker rm相同)将其删除为止,例如:

docker container rm brave_carson

答案 1 :(得分:0)

作为旁注,您可以使用docker run ... --rm ...在停止后自动删除容器

相关问题