尝试使用上述任一命令从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
重新启动。它启动后,它从未按预期工作。
答案 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>
为您提供有关内部运行情况的更多信息。