前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何获得Docker容器进程ID?

如何获得Docker容器进程ID?

作者头像
用户1560186
发布2019-11-20 17:08:51
5.5K0
发布2019-11-20 17:08:51
举报
文章被收录于专栏:运维录运维录
开始之前

在某些情况下,比如系统负载很高 docker stop 无法关闭某个容器(无响应),这时可以根据容器进程的ID找到宿主机进程ID,然后强制kill掉这个容器,最好已经使用了数据卷保证数据持久化,否则强制关闭容器可能会导致容器内数据丢失(关于数据卷后续专门写一篇文章)。

操作步骤

1. 列出当前容器

代码语言:javascript
复制
docker ps --format '{{.ID}} {{ .Names }}'

CONTAINER ID    NAMES
1201281cb959    web
425a6234df74    db

2. 获得容器进程ID

代码语言:javascript
复制
docker inspect -f '{{ .State.Pid }}' web
9834

3. 进程信息

代码语言:javascript
复制
tail /proc/9834/cmdline ;echo 
nginx: master process nginx -g daemon off;

4. 最后如有必要可以kill这个进程ID,这等于强制杀掉容器进程。

代码语言:javascript
复制
kill -9 9834

容器进程

内容摘自 <<Docker — 从入门到实践>> 一书。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID空间。

容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

小结

最后来总结下文章中的知识点

  • Docker容器本质上是宿主机上的进程。
  • 容器进程ID就是宿主机进程ID,因为它们是相同的。
  • 如果Docker守护进程正常响应命令,请不要使用直接kill进程的方法。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作步骤
  • 容器进程
  • 小结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档