在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)
2023-03-07 09:49:41 时间
前言:
在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。实时还原选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。
Docker官方相关详细文档:https://docs.docker.com/config/containers/live-restore/
具体方法:
1.将配置添加到守护进程配置文件中。在 Linux 上,默认的配置文件为/etc/docker/daemon.json
vim /etc/docker/daemon.json
{
"live-restore": true
}
2.Docker reload配置(不会重启docker)
给dockerd发送 SIGHUP信号,dockerd收到信号后会reload配置
systemctl reload docker / kill -SIGHUP $(pidof dockerd)
3.检查上面的配置是否成功
docker info | grep -i live
4.重启Docker,此时重启Docker时就容器就不会停止了
systemctl restart docker
实例:
1.查看当前Docker容器运行状态
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1364c71a6b5 lizhenliang/tomcat:latest "catalina.sh run" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp java
434bcfed5c5d registry.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 10 months ago Up 29 minutes 0.0.0.0:1521->1521/tcp, :::1521->1521/tcp oracle_11g
#可以看到上面两个容器的运行时间分别为1小时、29分钟
2.添加"live-restore": true
配置
[root@localhost ~]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://hx983jf6.mirror.aliyuncs.com"],
"graph": "/mnt/data",
"live-restore": true
}
3.更新docker配置(不会重启docker,只是更新配置)
[root@localhost ~]# systemctl reload docker 或者发送信号 kill -SIGHUP $(pidof dockerd)
4.查看上面的 "live-restore": true
配置是否成功
[root@localhost ~]# docker info | grep -i live
Live Restore Enabled: true
5.重启Docker,验证容器是否会停止
[root@localhost ~]# systemctl restart docker #重启docker
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1364c71a6b5 lizhenliang/tomcat:latest "catalina.sh run" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp java
434bcfed5c5d registry.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 10 months ago Up 32 minutes 0.0.0.0:1521->1521/tcp, :::1521->1521/tcp oracle_11g
可以看到在我们重启完Docker后,上面在运行的两个容器的运行时间分别为1小时、32分钟,容器并没有在我们重启Docker时停止,而是一直保持运行状态 。以后不用再担心处理问题时必须重启 dockerd 时会影响现有业务了,如升级 docker 版本、dockerd 内存泄漏等!
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的