docker容器信号使用示例分析
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,docker容器信号使用示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。容器信号使用我们跑在容器中的程序通常想在容器退出之前做一些
千家信息网最后更新 2025年12月02日docker容器信号使用示例分析
docker容器信号使用示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
容器信号使用
我们跑在容器中的程序通常想在容器退出之前做一些清理操作,比较常用的方式是监听一个信号,延迟关闭容器。
docker提供了这样的功能:
╰─➤ docker stop --helpUsage: docker stop [OPTIONS] CONTAINER [CONTAINER...]Stop one or more running containersOptions: --help Print usage -t, --time int Seconds to wait for stop before killing it (default 10)
docker 1.13以上版本在创建容器时可直接指定STOP_TIMEOUT 和STOP_SIGNAL参数:
$ docker run --help...--stop-signal string Signal to stop a container, SIGTERM by default (default "SIGTERM")--stop-timeout int Timeout (in seconds) to stop a container...
但是。。。
我们测试一个:
package mainimport ( "fmt" "os" "os/signal" "syscall" "time")func main() { fmt.Println("signal test") go func() { for { c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGTERM) s := <-c fmt.Println("Got signal:", s) } }() time.Sleep(time.Second * 100)}Dockerfile:
FROM dev.reg.iflytek.com/base/golang:1.8.0COPY main.go .RUN go build -o signal && cp signal $GOPATH/binCMD signal
构建:
docker build -t dev.reg.iflytek.com/test/signal:latest .
运行:
docker run --name signal dev.reg.iflytek.com/test/signal:latest
再开一终端,运行:
docker stop -t 10 signal
发现并没有打印出Got signal:... 监听信号失败。
问题再于:我们docker inspect signal看一下 可以看到
Path:/bin/shArgs:[ -c, signal]
或者docker exec signal ps 看一下可以看到pid为1的进程并不是signal, 而是shell.
所以原因找到了,是因为docker engine只给pid为1的进程发送信号,sh收到了信号而我们想要的signal进程没有收到信号
解决办法:
FROM dev.reg.iflytek.com/base/golang:1.8.0COPY main.go .RUN go build -o signal && cp signal $GOPATH/binCMD ["signal"] # 不能写成 CMD signal, 这会直接exec,否则会以shell的方式派生子进程。
看完上述内容,你们掌握docker容器信号使用示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
信号
容器
进程
问题
示例
分析
内容
原因
方式
方法
更多
监听
运行
束手无策
为此
办法
功能
参数
对此
常用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发自动化方面有什么用
sci数据库多少钱一年
lol连不上服务器
深圳因味网络技术
dota1最新物品数据库
网络安全中的CS是什么
日语软件开发北京
江门软件开发难吗
巴斯大学网络安全专业
英灵神殿怎么搭服务器
学安卓手机软件开发
8080爆破服务器
数据库安装盘被修改了盘符
湖州软件开发岗位
我的世界服务器管理永久权限
做软件开发属于前端还是后端
求生服务器选哪个
平谷服务器回收价格查询
应用软件开发的意义
广州冠晟网络技术有限公司
数据库ppt讲义
两栖类数据库
数据库创建房间代码
停车app软件开发
服务器处理器排行榜
vbk网络技术公司
服务器机房是怎么样的
软件数据库工作
湖南衡阳网络安全陈丹丹
金融行业网络安全预算