外观
05 · Docker
Docker 的坑集中在三处:网络模式选错、数据没落卷、构建缓存导致镜像巨大。这一章按这三件事展开。
小节规划
| 小节 | 内容 | 状态 |
|---|---|---|
| 安装与加速 | 官方源安装、国内镜像加速、daemon.json 常用项 | 已写 |
| 镜像与容器 | run/exec/logs/inspect 的高频参数组合、退出码 | 已写 |
| Dockerfile 最佳实践 | 多阶段构建、层顺序、.dockerignore、非 root 运行 | 已写 |
| 网络 | bridge/host/overlay 差异、容器互访、端口映射坑 | 已写 |
| 数据与卷 | volume 与 bind mount、权限与 UID、备份迁移 | 已写 |
| Compose 编排 | 依赖顺序、健康检查、环境变量分层 | 已写 |
| 私有仓库 | registry 搭建、HTTPS、认证、清理磁盘 | 已写 |
| 资源与日志 | cpu/mem limit、日志驱动与轮转 | 已写 |
| 排错手册 | 起不来、连不上、镜像拉不动、磁盘暴涨 | 已写 |
三条命令看清容器现状
bash
docker inspect -f '{{.State.Status}} {{.State.ExitCode}} {{.State.OOMKilled}} {{.HostConfig.Memory}}' <c>
docker logs --tail 50 --timestamps <c>
docker stats --no-stream <c>默认日志会撑爆磁盘
json-file 驱动默认不限大小,跑几个月就能把 /var/lib/docker 塞满。在 /etc/docker/daemon.json 里全局设:
json
{ "log-driver": "json-file", "log-opts": { "max-size": "50m", "max-file": "3" } }改完要 systemctl restart docker,且只对新创建的容器生效。