因为运行了多个容器,重启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
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。