Docker 容器生命周期入门:从第一次 run 到学会看日志排障

举报
yd_261230726 发表于 2026/10/23 10:58:49 2026/10/23
【摘要】 很多新手第一次用 Docker,流程往往是复制一条 docker run 命令,跑起来就完事。等容器莫名退出、端口访问不了的时候,才发现自己连容器现在是什么状态都说不清。其实容器的生命周期就几个阶段,把对应的命令用熟,日常排障就够用了。 一、先搞清容器的状态容器不是只有"运行"和"没运行"两种状态。创建之后可以启动、可以暂停、可以停止,停止后还能删除。用 docker ps 只能看到正在运行...

很多新手第一次用 Docker,流程往往是复制一条 docker run 命令,跑起来就完事。等容器莫名退出、端口访问不了的时候,才发现自己连容器现在是什么状态都说不清。其实容器的生命周期就几个阶段,把对应的命令用熟,日常排障就够用了。

一、先搞清容器的状态

容器不是只有"运行"和"没运行"两种状态。创建之后可以启动、可以暂停、可以停止,停止后还能删除。用 docker ps 只能看到正在运行的容器,加上 -a 才能看到全部,包括已经退出的。新手最常见的误会就是:docker ps 里找不到容器,就以为容器"丢了",其实它只是退出了,在 docker ps -a 里躺着呢。

二、run 之前先想清楚三件事

第一,端口映射的顺序是"宿主机端口:容器端口",写反了是新手最高频的错误。第二,数据要不要持久化:容器删了数据就没了,重要数据提前用 -v 挂载卷。第三,给容器起一个有意义的名字,后续所有操作都方便。把这三件事在 run 之前想一遍,能省掉后面一半的返工。

三、容器退出了,先看日志再看退出码

用 docker logs 看输出,加 --tail 100 只看最后 100 行,加 -f 持续跟踪。日志没头绪时,用 docker inspect 看 State 里的退出码:0 是正常退出,137 通常是内存不足被系统杀掉,125 多半是启动参数本身有问题。退出码就是容器留给你的遗言,先读遗言再动手。

四、想进容器看看,用 exec 别用 attach

docker exec -it 容器名 bash 会在运行中的容器里开一个新终端,退出时不影响主进程。而 attach 会接到主进程的标准输入输出,一不小心按下 Ctrl+C 就可能把主进程停掉,在正经环境里千万别顺手用。

五、停容器时给它一点时间

docker stop 会先发 SIGTERM 让进程优雅退出,默认等 10 秒还不停才强杀。数据库这类容器直接强杀容易丢数据。反过来,如果 stop 每次都等满 10 秒,多半是容器里的进程没有正确处理 SIGTERM 信号,可以检查一下启动方式。

把 ps -a、logs、inspect、exec、stop 这几个命令练熟,再配合官方文档查参数,Docker 的日常使用就通关了一大半。容器从来不是黑盒子,它每一步状态都明明白白写在那里,只等你去看。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。