两个"码头停止","码头杀死"也不是" docker -f rm"作品

时间:2016-02-28 21:51:54

标签: docker containers dockerhub

尝试使用上述任一命令从this image停止容器会导致docker无限期等待。仍然可以在function attrMerge( $default, $new="" ){ $res = array(); if(!is_array($default)) { $res["class"] = $default; } else { $res = $default; } if( $new !== "" ){ if(!is_array($new)) { if(isset($res["class"])){ $res["class"].= " ".$new; } } else { foreach($new as $key=>$value) { if( isset($res[$key]) ) { $res[$key].= " ".$value; } else { $res[$key] = $value; } } } } return $res; } $a = attrMerge("red", array("class"=>"green", "style"=>"display: block;")); 输出中观察容器。

很抱歉有新手问题,但如何正确停止容器?

首先根据hub.docker.com上的说明运行此容器,然后按Ctrl + C暂停,然后再由docker ps重新启动。它启动后,它从未按预期工作。

2 个答案:

答案 0 :(得分:2)

您的测试对我有用:

→ 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>

答案 1 :(得分:1)

Try { # Script goes here } Catch { # Custom output or choice of error code number goes here exit 1 } 是阻止容器的正确方法。内部可能会发生一些事情,您可以尝试使用docker stop <container-name>为您提供有关内部运行情况的更多信息。