前言

如何停掉运行中的docker容器并正确的终止其中的程序,这就成为一个非常值得讨论的话题了。事实上,在我们日常的项目当中,这是我们经常需要面对和处理的问题:

*
场景A:假如我们打包在容器中的程序,提供HTTP方式的服务,负责处理各种HTTP
requests并返回结果,我们必然希望在容器被停掉的时候,能够让程序有时间把已经在处理中的请求继续处理完毕,并返回结果给客户端。

*

场景B:又比如我们打包在容器中的程序,负责写入数据到某个数据文件中,我们希望程序能够在容器被停掉的时候,有时间把内存中缓存的数据持久化到存储设备中,以防数据丢失。

*

场景C:再比如现在流行的微服务架构中,一般会有服务发现的机制,也即每一个微服务在启动之后,都会主动把自己的地址信息注册到服务发现模块当中,让其他的服务可以知道自己的存在。而在容器被停掉的时候,微服务需要即时从服务发现模块中注销自己,以防止从API
Gateway而来的请求被错误的路由到了已经被停止掉的微服务。

如上的各种场景中,都要求打包在容器中的应用程序能够被优雅的终止(也即gracefully shutdown),这种gracefully
shutdown的方式,允许程序在容器被停止的时候,有一定时间做一些后续处理操作。

docker stop

当我们用docker stop命令来停掉容器的时候,docker默认会允许容器中的应用程序有10秒的时间用以终止运行。所以我们查看docker
stop命令帮助的时候,会有如下的提示:
→ docker stop --help Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers Options: --help Print usage -t, --time int S

技术
©2019-2020 Toolsou All rights reserved,
一个名叫“讨火车”的小村子 终于把火车讨来了c++内存 指针越界检测机制_CrtMemBlockHeade错误总结-myBatis plus 分页记一次EventBus内存泄露导致的项目问题服务器价格有什么差异?Android中获取当前正在显示的Activity实例创建数据mysql库流程在Vue中使用Web Worker最优化方法总结:公式解、数值优化、求解思想使用easyPOI导入Excel数据