Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker容器无法被stop or kill问题

Docker容器无法被stop or kill问题

原创
作者头像
码代码的陈同学
发布于 2018-06-27 12:51:44
发布于 2018-06-27 12:51:44
9.8K0
举报

欢迎访问陈同学博客原文

Docker version 1.13.1

问题过程

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

sudo docker ps | grep mysql 查看该容器

代码语言:txt
AI代码解释
复制
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,说明容器立马启动了

代码语言:txt
AI代码解释
复制
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

代码语言:txt
AI代码解释
复制
"RestartPolicy": {
    "Name": "no",
    "MaximumRetryCount": 0
},

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

你是否出现过这种场景:

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

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

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

拓展阅读: Docker Restart Policy

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

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

no

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

on-failure

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

代码语言:txt
AI代码解释
复制
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-stoppedalways 基本一样,只有一个场景 unless-stopped有点特殊:

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
docker容器命名和资源配额控制(2)
docker 容器命名和重命名 容器命名语法:docker run -d --name 容器实例名 容器镜像名 要执行的命令容器重命名语法: docker rename 旧容器名 新容器名
cuijianzhe
2022/06/14
4610
云原生时代,必备的Docker容器管理命令大揭秘!
在一个终端执行docker create,在另一个终端执行docker events。
Lion 莱恩呀
2025/05/07
590
云原生时代,必备的Docker容器管理命令大揭秘!
Docker -- 系统整洁之道 -- 1
在上文Docker – 系统整洁之道 – 0中已经对Docker是什么,安装Docker以及怎么运行一个简单的容器有了初步了解,这篇文章介绍Docker的一些命令和Docker镜像的使用及操作。
流川疯
2022/05/10
2570
Docker -- 系统整洁之道 -- 1
ansible之docker_container模块
docker_container模块用于管理docker容器 auto_remove: yes|no command # 容器启动时执行的命令 entrypoint # 覆盖镜像默认值ENTRYPOINT env_file # 环境变量的文件路径 etc_hosts # 主机名到IP的映射,添加到容器的/etc/hosts文件中 force_kill: yes|no # 停止正在运行的容器 healthcheck: # 对容器进行健康检查 interval: # 检查
陳斯托洛夫斯記
2022/10/27
1.4K0
Docker容器
Docker利用容器来开发、运行应用。容器是镜像创建的实例。它可以被启动、开始、停止、删除。每个容器都是 相互隔离的、保证安全的平台。类似安装系统的电脑实体。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环 境)和跑在上面的应用。
清风穆云
2021/08/09
9310
容器管理平台Rancher解析
Rancher是What?一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。
Luga Lee
2021/12/09
2.4K0
容器管理平台Rancher解析
【知识分享】docker run命令详解
(1)Docker run 命令参数及使用 https://blog.csdn.net/luolianxi/article/details/107169954 (2)Docker run 命令[简洁清爽版] https://www.runoob.com/docker/docker-run-command.html (3)docker run官网说明 https://docs.docker.com/engine/reference/commandline/run/ (4)【知识分享】Docker 命令大全 https://www.jianshu.com/p/7fa8e918768e
辉哥
2021/04/01
1K0
【知识分享】docker run命令详解
Docker的容器
coders
2018/01/04
1K0
Docker容器设置自动重启
有时Docker服务出现异常,或者服务器出现异常,需要重启Docker服务或者服务器; 如果希望有一部分基础的或者常用的容器,在服务或者服务器重启的时候,可以实现自动启动,仅需使用命令进行简单配置即可实现。
橘子君丶
2024/04/02
1.2K0
docker容器的重启策略
此时,如果这个容器由于某种原因第一次启动失败了,那么,该容器将会再重启两次,而不会一直无限重启啦。
入门笔记
2022/11/11
2.7K0
Docker入门
上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解
cxuan
2019/08/16
8610
Docker入门
n1.Docker命令参数一览表
Docker 官方命令学习文档: https://docs.docker.com/engine/reference/commandline/cli/
全栈工程师修炼指南
2022/09/28
1.5K0
n1.Docker命令参数一览表
docker 新手入门进阶详细篇
docker 运行(run) 完成后建立的叫 容器(Apps /Containers )
XRSec
2022/03/09
7120
Docker容器常见操作详解
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped ) 的容器重新启动。 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
星哥玩云
2022/07/14
1.4K0
Docker入门
docker 在线测试网站: play With Docker,这是一个可以用来在线练习 docker 指令的网站,具备一切 docker 环境,不用为环境而烦恼,网速还特别快
jinghong
2020/05/12
1.5K0
Docker入门
Docker实践(二):容器的管理(创建、查看、启动、终止、删除)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101573.html原文链接:
全栈程序员站长
2021/06/10
2.6K0
docker高级教程_docker到底怎么用
可以看见右侧有docker pull command拉取镜像的命令,以windows为例,打开cmd输入以上命令即可下载docker镜像
全栈程序员站长
2022/11/03
1.4K0
docker高级教程_docker到底怎么用
【Linux系列】将Docker容器设为自启动和取消容器自启动
前言 五一小长假回来以后,公司因为物业断电导致服务器停止运行,来电后发现一些常用的服务并没有自启动,比如 grafana,查了下原因发现是当初部署这个容器的时候,没有添加异常停止后重新尝试启动的参数 --restart,下面来说下如何在不删除容器的情况下更新参数。 参数说明: –restart --restart参数= no 默认策略,在容器退出时不重启容器 on-failure 在容器非正常退出时(退出状态非0),才会重启容器 on-failure:
框架师
2022/05/12
4.1K0
快速学习Docker-多容器管理(docker-compose)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/11/04
3K0
8. docker-compose.yml文件
Compose和Docker兼容性: Compose 文件格式有3个版本,分别为1, 2.x 和 3.x 目前主流的为 3.x 其支持 docker 1.13.0 及其以上的版本 常用参数: version # 指定 compose 文件的版本 services # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称 build # 指定包含构建上下文的路径, 或作为
友儿
2022/09/11
1.3K0
相关推荐
docker容器命名和资源配额控制(2)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档