前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)

在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)

作者头像
非著名运维
发布2023-02-20 16:32:55
3.4K0
发布2023-02-20 16:32:55
举报
文章被收录于专栏:非著名运维非著名运维

前言:

在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。实时还原选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。

Docker官方相关详细文档:https://docs.docker.com/config/containers/live-restore/

具体方法:

1.将配置添加到守护进程配置文件中。在 Linux 上,默认的配置文件为/etc/docker/daemon.json

代码语言:javascript
复制
vim /etc/docker/daemon.json
{
  "live-restore": true
}

2.Docker reload配置(不会重启docker)

给dockerd发送 SIGHUP信号,dockerd收到信号后会reload配置

代码语言:javascript
复制
systemctl reload docker  / kill -SIGHUP $(pidof dockerd)     

3.检查上面的配置是否成功

代码语言:javascript
复制
docker info | grep -i live

4.重启Docker,此时重启Docker时就容器就不会停止了

代码语言:javascript
复制
systemctl restart docker

实例:

1.查看当前Docker容器运行状态

代码语言:javascript
复制
[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配置

代码语言:javascript
复制
[root@localhost ~]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://hx983jf6.mirror.aliyuncs.com"],
"graph": "/mnt/data",
"live-restore": true
}

3.更新docker配置(不会重启docker,只是更新配置)

代码语言:javascript
复制
[root@localhost ~]# systemctl reload docker 或者发送信号 kill -SIGHUP $(pidof dockerd)

4.查看上面的 "live-restore": true配置是否成功

代码语言:javascript
复制
[root@localhost ~]# docker info | grep -i live
 Live Restore Enabled: true

5.重启Docker,验证容器是否会停止

代码语言:javascript
复制
[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 内存泄漏等!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 具体方法:
  • 实例:
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档