我正在尝试使用以下命令杀死我的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,除非它是最后一个也是唯一的选择。
答案 0 :(得分:1)
如果杀死该容器,则无法对其执行。容器必须正在运行才能使exec正常工作(您应该从中得到一条错误消息)。
当容器未运行时,不应有任何进程。但是,docker中的容器定义(包括日志和对容器文件系统的更改)将一直保留,直到您使用docker container rm
(与docker rm
相同)将其删除为止,例如:
docker container rm brave_carson
答案 1 :(得分:0)
作为旁注,您可以使用docker run ... --rm ...
在停止后自动删除容器