Docker技能使用说明
2026-03-27
新闻来源:网淘吧
围观:59
电脑广告
手机广告
何时使用
当任务涉及 Docker、Dockerfile、容器构建、Compose、镜像发布、网络、卷、日志、调试或生产容器操作时使用。此技能是无状态的,一旦出现 Docker 相关工作,应直接应用。
快速参考
| 主题 | 文件 |
|---|---|
| 基本命令 | commands.md |
| Dockerfile 模式 | images.md |
| Compose 编排 | compose.md |
| 网络与卷 | infrastructure.md |
| 安全加固 | security.md |
核心规则
1. 固定镜像版本
- python:3.11.5-slim而非python:latest
- 今天的 latest 与明天的不同——这会破坏不可变构建
2. 合并 RUN 命令
- apt-get update && apt-get install -y pkg于单一层中
- 分层操作 = 几周后包缓存过时
3. 默认非 Root 用户
- 在 Dockerfile 中添加USER nonroot以 root 身份运行会导致安全扫描和平台策略检查失败
- 4. 设置资源限制
4. Set Resource Limits
- -m 512m在每个容器上
- 否则OOM杀手会在无预警的情况下发起攻击
5. 配置日志轮转
- 默认的json-file驱动程序没有大小限制
- 一个话痨容器会填满磁盘并导致主机崩溃
镜像陷阱
- 多阶段构建:被遗忘--from=builder静默地从错误的阶段复制
- 在RUN之前执行COPY会使每次文件更改都使缓存失效——应先复制依赖文件,安装依赖,然后复制代码
- ADD会自动解压归档文件——请使用COPY除非你需要解压功能
- 构建参数在镜像历史中可见——切勿用于存储密钥
运行时陷阱
- localhost在容器内指的是容器自身的本地主机——应绑定到0.0.0.0
- 端口已被占用:之前的容器仍在停止中——请等待或强制移除
- 退出码137 = 被OOM杀手终止,139 = 段错误——使用以下命令检查docker inspect --format='{{.State.ExitCode}}'
- 无发行版镜像中没有shell——docker cp复制文件出来或使用调试辅助容器
网络陷阱
- 容器DNS仅在自定义网络中有效——默认网桥无法解析名称
- 已发布的端口绑定到0.0.0.0——请使用127.0.0.1:5432:5432仅限本地使用
- 已终止容器遗留的僵尸连接——设置健康检查并配置重启策略
Compose 常见陷阱
- depends_on仅等待容器启动,不确保服务就绪——需使用condition: service_healthy
- .env文件放置错误目录会被静默忽略——必须与 docker-compose.yml 同级
- 卷挂载会覆盖容器内文件——空主机目录将清空容器目录
- YAML 锚点不能跨文件生效——应改用多 compose 文件方案
卷管理陷阱
- 匿名卷会持续累积——建议使用命名卷
- 绑定挂载存在权限问题——容器用户需与主机用户匹配
- docker system prune不会清理命名卷——需添加--volumes参数
- 已停止容器的数据将持久留存直至容器删除
资源泄漏问题
- 悬空镜像会无限增长——需定期执行docker image prune构建缓存持续膨胀——执行
- docker builder prune可回收空间已停止容器仍占用磁盘——通过
- docker container prune或运行命令添加--rm参数清理Compose 项目会产生堆积的网络资源
- Networks pile up from compose projects —docker network prune
机密信息与安全
- ENV 和 COPY 会将机密信息永久固化到镜像层历史中 —— 请使用机密挂载或运行时环境变量
- --privileged会禁用所有安全措施 —— 几乎永远不需要,请寻找特定的权限替代
- 来自未知注册表的镜像可能包含恶意软件 —— 请验证来源
- 构建参数在镜像历史中可见 —— 不要用于存储机密信息
调试
- 退出码 137 = 内存不足被终止,139 = 段错误 —— 检查docker inspect --format='{{.State.ExitCode}}'
- 容器无法启动:检查日志,即使是失败的容器也要检查 ——docker logs <container>
- 无发行版镜像中没有 shell ——docker cp将文件复制出来或使用调试边车容器
- 检查已停止容器的文件系统 ——docker cp deadcontainer:/path ./local
相关技能
安装方式:clawhub install <slug>如果用户确认:
- devops—— 部署流水线
- linux—— 主机系统管理
- server—— 服务器管理
反馈
- 如果觉得有用:clawhub star docker
- 保持更新:clawhub sync
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~