参考博客:https://medium.com/devopsion/life-and-death-of-a-container-146dfc62f808
下面看一个比较有迷惑性的例子:
一、image test封装的python脚本如下:
1 import time 2 3 i = 0 4 while True: 5 print(i) 6 i = i + 1 7 time.sleep(1)
二、build image 并且 run container,ctrl+c打断container
[yongqiang@yongqiang-pc test]$ sudo docker run --name test test ^C0 1 2 Traceback (most recent call last): File "./app.py", line 7, intime.sleep(1) KeyboardInterrupt
三、start重启container。注意,这次是start -a,在log中将可以看到两次的输出
[yongqiang@yongqiang-pc test]$ sudo docker start -a test ^C0 1 2 3 Traceback (most recent call last): File "./app.py", line 7, intime.sleep(1) KeyboardInterrupt [yongqiang@yongqiang-pc test]$ sudo docker logs test 0 1 2 Traceback (most recent call last): File "./app.py", line 7, in time.sleep(1) KeyboardInterrupt 0 1 2 3 Traceback (most recent call last): File "./app.py", line 7, in time.sleep(1) KeyboardInterrupt
四、这次只是单纯的重启container,没有-a。log中将看不到这次的输出,但容器确实重启了。
[yongqiang@yongqiang-pc test]$ sudo docker start test test [yongqiang@yongqiang-pc test]$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b7a7235e2b80 test "python ./app.py" 20 minutes ago Up 8 seconds 8000/tcp test [yongqiang@yongqiang-pc test]$ sudo docker stop test test [yongqiang@yongqiang-pc test]$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b7a7235e2b80 test "python ./app.py" 20 minutes ago Exited (137) 5 seconds ago test [yongqiang@yongqiang-pc test]$ sudo docker logs test 0 1 2 Traceback (most recent call last): File "./app.py", line 7, intime.sleep(1) KeyboardInterrupt 0 1 2 3 Traceback (most recent call last): File "./app.py", line 7, in time.sleep(1) KeyboardInterrupt