docker容器如何退出
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章将为大家详细讲解有关docker容器如何退出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。容器信号使用我们跑在容器中的程序通常想在容器退出之前做一些清理操作
千家信息网最后更新 2025年02月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 golang:1.8.0COPY main.go .RUN go build -o signal && cp signal $GOPATH/binCMD signal
构建:
docker build -t signal:latest .
运行:
docker run --name signal 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 golang:1.8.0COPY main.go .RUN go build -o signal && cp signal $GOPATH/binCMD ["signal"] # 不能写成 CMD signal, 这会直接exec,否则会以shell的方式派生子进程。
关于"docker容器如何退出"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
容器
信号
进程
篇文章
方式
更多
监听
运行
不错
实用
内容
办法
功能
原因
参数
常用
文章
版本
知识
程序
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机与网络安全考试重点
fifaol4大区服务器地址
网络安全法对电信的要求
网络技术多冗余
服务器显示77
电子交易的网络安全
网络技术工程师简介
lt软件开发主要是做啥
老牌app软件开发定制
建立数据库的命令格式
sql数据库启动失败
通信网络安全林鹏
剑与家园怎么创建服务器
修改linux服务器ip
梦幻西游广东4区有哪些服务器
ai需要什么服务器配置
hp服务器供应商
数据库软件开发平台
新捷软件开发
数据库事务的隔离级别
中国网络技术是干什么的
电脑服务器可以自己组装吗
学校网络安全管理办法体会
网络技术实用性
如何把表转换成数据库
广州新华互联网科技学校高中
儿童网络安全解决方案
英业达软件开发实习生工资
华为网络技术分享
window时间服务器