【问题标题】:Neither "docker stop", "docker kill" nor "docker -f rm" works“docker stop”、“docker kill”和“docker -f rm”都不起作用
【发布时间】:2023-03-20 00:42:01
【问题描述】:

尝试使用上述任一命令从 this image 停止容器会导致 docker 无限期等待。该容器仍然可以在docker ps 输出中观察到。

对不起,新手问题,但如何正确停止容器?

此容器首先根据 hub.docker.com 上的说明运行,由 Ctrl+C 停止,然后由 docker start <containter-name> 再次启动。启动后,它从未按预期工作。

【问题讨论】:

  • 看来容器运行supervisord的配置文件如下https://github.com/jleight/docker-opentsdb/blob/master/supervisor.conf,文件中有一个设置stopwaitsecs=60。不知道是不是这个原因。

标签: docker containers dockerhub


【解决方案1】:

你的测试对我有用:

→ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
853e36b8a952        jleight/opentsdb    "/usr/bin/supervisord"   9 minutes ago           Up 9 minutes        0.0.0.0:4242->4242/tcp   fervent_hypatia

→ docker stop fervent_hypatia
fervent_hypatia

→ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

花了一点时间,但我认为这是因为 Docker 映像使用的是主管进程,所以 SIGTERM(这是 docker stop 首先发送的)不会杀死容器,而是默认发送的 SIGKILL 10 秒后应该(我的等待时间约为 10 秒)。

以防万一您的默认设置可能由于某种原因被搞砸了,请尝试明确指出超时:

docker stop --time=2 <container-name>

【讨论】:

  • 我在等待 5 分钟后最终杀死了 VBox 进程。后来它没有重复自己,尽管停止这个容器确实需要一段时间。
【解决方案2】:

docker stop &lt;container-name&gt; 是停止容器的正确方法。里面可能有什么东西,你可以试试docker logs &lt;container-name&gt; 给你更多关于里面运行的信息。

【讨论】:

  • 不知道为什么这被否决了;除了暗示需要帮助杀死容器外,他/她还明确提出“对不起一个新手问题,但是如何正确停止容器?”
猜你喜欢
  • 2022-10-24
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 2015-08-12
  • 2023-01-27
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多