Docker 日常运维小技巧:日志、磁盘与健康检查
日常用 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 上验证,再应用到长期运行的环境。
- 点赞
- 收藏
- 关注作者
评论(0)