Docker 日常运维小技巧:日志、磁盘与健康检查

举报
yd_244489064 发表于 2026/10/25 09:15:43 2026/10/25
【摘要】 日常用 Docker 跑服务时,最容易被忽略的不是镜像本身,而是日志和磁盘。容器标准输出默认走 json-file 驱动,如果不设上限,一台长期运行的机器几天就能把系统盘写满。建议在 compose 的 logging 里加上 max-size 和 max-file,例如单文件 10m、最多保留 3 个。改完后只有新建的容器才会生效,已经在跑的容器需要重建一次。排查“容器在、服务不通”时,先...

日常用 Docker 跑服务时,最容易被忽略的不是镜像本身,而是日志和磁盘。容器标准输出默认走 json-file 驱动,如果不设上限,一台长期运行的机器几天就能把系统盘写满。建议在 compose 的 logging 里加上 max-size 和 max-file,例如单文件 10m、最多保留 3 个。改完后只有新建的容器才会生效,已经在跑的容器需要重建一次。

排查“容器在、服务不通”时,先看健康检查,而不是先重启。HEALTHCHECK 或 compose 的 healthcheck 应该打真实探测,比如 HTTP 的 /health,或业务真正监听的端口。interval 不要短于 10 秒,start_period 要盖过应用冷启动时间,retries 设成 3 左右,避免启动抖动被编排系统反复拉起。

清理空间时不要一上来就执行 docker system prune -a。先用 docker system df 看镜像、容器、构建缓存和卷各占多少,再单独清理悬空镜像。命名卷里常常是数据库数据。prune 默认不会删除正在使用的卷,但加上 --volumes 会把当前没有容器挂载的卷一起清掉。删除前用 docker volume ls 对一下名字。

多个容器在同一网络里时,用服务名做 DNS,不要把容器 IP 写进配置。容器重建后 IP 会变,服务名不会。只把需要对宿主机或外网开放的端口映射出去,管理端口留在内部网络。更新时先 pull 再 up -d,并固定小版本标签,避免 latest 在不同机器上悄悄变成不同构建。

这几条覆盖了日常最常见的四个坑:日志把磁盘写满、健康检查缺失导致误重启、清理卷时误删数据、以及用 IP 代替服务名。改动前先在一份测试用的 compose 上验证,再应用到长期运行的环境。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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