网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

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

天猫隐藏优惠券

网淘吧

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第273064名访客 今日有200篇新文章/评论