如何检查Docker的重启策略是否有效

从Docker 文档中 ,可以设置restart policy参数。

当容器退出时,如何validation容器确实重新启动。 如何手动触发容器的退出,并观察容器是否重新启动?

我的环境是Mac和boot2docker。

谢谢

你也可以通过docker exec -it container_id bash ,然后kill -9主进程kill -9 。 我testing了docker run -d --restart=always -e DISPLAY=$DISPLAY -v /home/gg/moncontainer:/home/gg -v /tmp/.X11-unix:/tmp/.X11-unix k3ck3c/captvty我杀了主进程(pid 5,Captvty.exe),被注销了容器,2秒钟后,它重新启动,窗口被重新创build

运行容器后,你可以检查它的政策,重启国家和上次启动时间:

 docker inspect -f "{{ .HostConfig.RestartPolicy }}" <container_id> docker inspect -f "{{ .RestartCount }}" <container_id> docker inspect -f "{{ .State.StartedAt }}" <container_id> 

然后你可以看看容器进程:

 docker exec -it <container_id> ps -aux 

PID 1过程 – 是主要过程,在其死亡后整个容器将会死亡。

杀了他使用

 docker exec -it <container_id> kill -9 <pid> 

之后,确保容器autorestarted:

 docker inspect -f "{{ .RestartCount }}" <container_id> 

我只是手动创build一个容器,像这样:

 docker run -d --restart=always tacodata/pythondev sleep 10 

注意守护进程开始,但容器在10秒内退出。 每次我做一个dockerps我看到:

 core@pa2 ~ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 69cbae4b6459 tacodata/pythondev:latest "sleep 10" About a minute ago Up 9 seconds 5000/tcp high_colden 

所以,容器是在一分钟之前创build的,但状态只显示了9秒。 它不断重启。 您可以从以下位置获取该信息:

 core@pa2 ~ $ docker inspect high_colden [{ "AppArmorProfile": "", ... "Path": "sleep", "ProcessLabel": "", "ResolvConfPath": "/var/lib/docker/containers/69cbae4b645926b14d86effcfaaa7735119e7f0c8afb0baff5cc1913583bf35a/resolv.conf", "RestartCount": 16, "State": { "Error": "", "ExitCode": 0, "FinishedAt": "2015-04-16T16:36:15.325629703Z", "OOMKilled": false, "Paused": false, "Pid": 13453, "Restarting": false, "Running": true, "StartedAt": "2015-04-16T16:36:15.860163812Z" }, "Volumes": {}, "VolumesRW": {} }