无法停止、杀死或移除Docker容器

16

我现在有一个运行了5周的容器,无法停止、杀死、或删除。 docker ps 显示如下(实际上这两个容器都无法被删除):

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
431a850b384f        f99983306232        "cmd /c 'start /B C:…"   5 weeks ago         Up 5 weeks          0.0.0.0:80->80/tcp   dockercompose18429431017078490850_xxx_1
e31f0b74a8cb        50eef858d93d        "cmd /c 'start /B C:…"   6 weeks ago         Up 6 weeks          0.0.0.0:80->80/tcp   dockercompose15856640072218908353_xxx_1

docker stop e31docker kill e31 都没有生效,docker rm e31 出现了错误:

Error response from daemon: removal of container e31 is already in progress
如果我运行 docker inspect e31 ,我会看到容器正在运行,它没有停止:
    "Id": "e31f0b74a8cb8225d5104f8de7e1c583ed1852133ad2870015017b09d3df8dfa",
    "Created": "2019-05-08T06:57:24.3143863Z",
    ...
    "State": {
        "Status": "running",
        "Running": true,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 1324,
        "ExitCode": 0,
        "Error": "",
        "StartedAt": "2019-05-08T06:57:30.3396878Z",
        "FinishedAt": "0001-01-01T00:00:00Z"
    },
  ...

如何摆脱它?

系统信息:

  • 服务器版本:19.03.0-rc2

  • 操作系统:Windows 10 Pro 版本 1903 (OS Build 18362.175)


你能添加命令 docker ps 的输出吗?另外,你是如何调用上面的命令的?请提供一个例子。 - ReynierPM
无法解决此问题,即使使用最新的引擎版本也不行:我已将我的Win2019服务器上的Docker引擎升级到19.03.5版本,但仍然无法停止/删除容器... - carloreggiani
9个回答

11

我也遇到过这个问题几次。我采取的措施是-

  1. docker ps 显示容器 ID
  2. net stop docker - 停止 Docker 引擎 (请注意,所有容器都将停止)
  3. 删除名称以步骤 1 中获取的 ID 开头的文件夹 c:\programdata\docker\containers
  4. net start docker - 启动 Docker 引擎

不幸的是,Docker 服务仍然需要停止和启动,但至少我不必重新安装。


8

在紧急情况下,即使使用docker rm -f也无法解决问题时,可以通过停止守护进程并手动删除容器来解决问题:

sudo systemctl stop docker
sudo rm -rf /var/lib/docker/containers/<CONTAINER_ID>
sudo systemctl start docker

当我尝试删除/var/lib/docker/containers/<CONTAINER_ID>下的文件时,出现以下错误:rm: 无法删除'/var/lib/docker/containers/<container_ID>/mounts/shm': 设备或资源忙 - Brian

2
对我们来说,这是一次更新,改变了RHEL上的docker.service配置。 解决方案
docker rm -f <container-id>
systemctl daemon-reload
systemctl restart containerd
systemctl restart docker
docker-compose up -d

The Error we were receiving

docker-compose up -d --force-recreate
Recreating 952ba6a5bbc4_my-app ... error
t: connection refused: unknown'
​
ERROR: for 952ba6a5bbc4_my-app  Cannot start service my-app: b'dial unix \x00/run/containerd/s/086e56: connect: connection refused: unknown'
​
ERROR: for my-app  Cannot start service my-app: b'dial unix \x00/run/containerd/s/086e56: connect: connection refused: unknown'
ERROR: Encountered errors while bringing up the project.```

1
只有这个回复对我有用,谢谢。 - Surcouf

1

这听起来可能太激进了,但我刚刚重新安装了Docker。多余的容器已经消失了。终于。


正如我之前提到的,这些容器已经运行了数周。笔记本电脑已经重新启动了数十次。 - Serhii Shushliapin

0

我曾多次遇到同样的问题。Error response from daemon: removal of container docker_container_id_goes_here is already in progress

重新启动您的Docker并在PowerShell或终端中运行以下命令
docker rm docker_container_id_goes_here


0

使用docker system prune清理Docker,然后停止或删除您的容器。


-2

你可以通过容器名称来杀死一个容器,根据输出结果,正确的命令应该是:

docker kill dockercompose15856640072218908353_xxx_1

请点击这里获取更多信息。尝试一下并告诉我是否有效。


1
与通过ID杀死容器相同。命令行不显示结果,直到被取消。容器仍然存在。 - Serhii Shushliapin
我不确定这是一个 docker 还是 docker-compose 堆栈,所以我会尝试使用 docker-compose kill|down,但在更改目录之前,请确保进入 Dockerfile 所在的目录。 - ReynierPM
1
你可以尝试重启你的 Docker 服务吗?这将停止你正在运行的所有容器。 - Abhineet Gupta
在过去的几周中,我多次重启了我的笔记本电脑。甚至升级到了1903版的Windows,但没有任何改变。 - Serhii Shushliapin

-2

对于Mac和Windows用户来说,一个简单的方法是使用Docker Desktop。


-3
尝试以下两个命令,首先停止容器,然后删除它们,如果它们是使用Dockerfile创建的。
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

对于 Docker Compose 的事情,请使用此命令来删除已附加的容器

docker-compose down

尝试了两种方法。docker-compose downdocker-compose kill 都没有帮助。 - Serhii Shushliapin
1
你尝试过重启或关闭/打开Docker吗? - Farrukh Faizy
@FarrukhFaizy,它对我有用!不要问我为什么。然而,这不是一个可行的解决方案 :( - flarkmarup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接