不重启docker进程,重新reload加载配置过程
作者:IT杂人
这篇文章主要介绍了不重启docker进程,重新reload加载配置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
因为运行了多个容器,重启docker进程时会让所有容器重启,时间不能等;有没有类似nginx一样的reload机制呢?
linux 信号认知:SIGHUP
本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。
登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都属于这个 Session。
当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进 程组和后台有终端输出的进程就会中止。
不过可以捕获这个信号,比如wget能捕获SIGHUP信号,并忽略它,这样就算退出了Linux登录,wget也 能继续下载。
重点来了:
此外,对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。
使用kill测试
ps -ef|grep dockerd kill -SIGHUP $(pidof dockerd)
– 使用kill命令,发送SIGHUP信号给dockerd ,dockerd收到信号后会reload配置;
– SIGHUP对应信号编码1,可简化为:
kill -1 $(pidof dockerd)
测试结果
使用docker info查询或者相关的配置的操作显示:
发现容器的状态时间不变,但新的配置已经添加;
另常用的kill另一个信号是:
kill -9 $pid
对应的信号是:
SIGKILL
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。