小知识:Docker容器无法被stop or kill问题的解决方法

Docker version 1.13.1

问题过程

某环境一个mysql容器无法被stop or kill or rm

sudo docker ps | grep mysql 查看该容器

?
1
7844250860f8 mysql:5.7.22  “/.r/r docker-entr…”  41 minutes ago  Up 8 minutes  r-dlrel-mysql-1-66df8f33

使用docker stop / docker kill / docker rm -f 等命令处理后,容器立马自动重启

立即查看容器,运行时间为:Up Less than a second,说明容器立马启动了

?
1
7844250860f8 mysql:5.7.22  “/.r/r docker-entr…”  42 minutes ago Up Less than a second  r-dlrel-mysql-1-66df8f33

kill该容器对应的物理进程,依然自动重启

获取物理进程方式:1.docker inspect中的 State.Pid字段为物理进程ID; 2.ps 命令

查看容器restart policy,策略为no,即不会自动重启

如果需要更新运行中容器的restart策略,可以使用该命令:docker update –restart=no my-container

?
1
2
3
4
“RestartPolicy”: {
“Name”: “no”,
“MaximumRetryCount”: 0
},

程序员之间神奇的问题解决方式

你是否出现过这种场景:

百思不得其解的问题,当走到同事面前,刚把问题说清楚,自己就恍然大悟了。 问题明明很简单,但程序运行就是出问题,然后找个同事帮忙检查下基础配置,自己又顿悟了。

这次我属于第一种,刚把问题说完,立马想起:擦,是容器编排工具Rancher在做调度,容器挂了之后会自动重启。

登录rancher一看,果然如此,”乌龙”问题。虽这次不是问题,但Docker确实有无法stop的问题,资料也很多。

拓展阅读: Docker Restart Policy

解决过程中了解了很多Docker Restart Policy知识和Bug,这篇文章写的简单易懂:Ensuring Containers Are Always Running with Dockers Restart Policy

这里仅做下记录,学习下Docker的四种Restart Policy。

no

no是默认策略,在任何情况下都不会restart容器

on-failure

on-failure表示如果容器 exit code异常时将restart,如果容器exit code正常将不做任何处理。

?
1
2
sudo docker run -d –name testing_restarts –restart on-failure:5 testing_restarts
85ff2f096bac9965a9b8cffbb73c1642bf7b64a2173bbd145961231861b95819

on-failure[:max-retries],max-retries表示最大重启次数。

on-failure的好处是:如果容器以正常exit code终止,将不会 restart

always

无论容器exit code是什么,都会自动restart。列举几个场景:

容器以非正常状态码终止(如应用内存不足导致终止) 容器被正常 stopped,然后机器重启或Docker服务重启 容器在宕机在正常运行,然后重启机器或Docker服务重启

以上情况always侧露都会restart容器,但是如果是 on-failure和no策略,机器被重启之后容器将无法restart。

unless-stopped

unless-stopped 和 always 基本一样,只有一个场景 unless-stopped有点特殊:

如果容器正常stopped,然后机器重启或docker服务重启,这种情况下容器将不会被restart

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/myle69/article/details/80834848

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Docker一行命令完成FTP服务搭建的实现

2023-4-1 19:03:29

建站知识

小知识:Dockerfile中的ENV指令的具体使用详解

2023-4-1 19:18:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索