#Docker
共 146 篇文章
Docker non-blocking 日志出现缺口:检查缓冲与投递速度
应用正常响应但日志缺失,检查 non-blocking 中间缓冲和实际投递速度。区分普通 Docker 与 ECS 默认配置,评估容量、背压和已丢消息的恢复边界。
Docker rootless 已有 cgroup v2,Driver 仍是 none
系统已有 cgroup v2,rootless Docker Driver 仍为 none:核对 systemd 条件和实际后端。参数被接受、容器健康都不能证明资源上限已经实施。
BuildKit 只复制一个文件,新增别的文件仍让缓存失效
RUN 只复制一个文件,但绑定源是整个目录,新增其他文件仍可能使缓存失效。按真实依赖缩小 source,分别验证缓存和产物完整性。
Compose Watch 首次漏同步旧文件,修改后却能同步
Watch 首次没有复制已有文件,编辑后却正常同步,核对旧镜像时间过滤和实际版本。正式 5.5.1 已移除该过滤,路径、忽略和权限仍需检查。
RUN 的 bind 挂载加了 rw,下一步文件仍消失
构建 bind 挂载加 rw 后生成的文件仍在下一步消失:挂载写入不会提交镜像层。产物须在当前 RUN 结束前写到挂载外,再进入最终阶段。
Docker build 切换用户后,SSH 挂载报 publickey
切到非 root 用户后 SSH 构建报 publickey,检查 agent 套接字的默认属主和实际 UID。套接字可读、agent 身份与仓库授权分别核对。
COPY --link 写入 /tmp 后,apt 无法写临时文件
COPY 加上 --link 后,/tmp 从带 sticky bit 的模式变为 0755,apt 无法写临时文件。核对独立层的目录模式覆盖,避免只给文件加 chmod。
Compose 添加 build 后仍拉取镜像:检查 pull_policy
开发覆盖文件增加 build 后仍使用仓库镜像,先看合并模型中的 image 和 pull_policy。明确本地构建策略,再核对实际运行产物。
镜像已推送,manifest inspect 却报 no such manifest
Buildx 推送完成,manifest inspect 却提示清单不存在。用 imagetools 核对 OCI 对象与媒体类型,保留客户端版本和 provenance 的兼容边界。
Compose 更新上游后 Nginx 报 502:检查依赖重启设置
后端被 Compose 重建后,Nginx 仍运行却返回 502。检查依赖长写法的 restart 设置,区分显式更新传播与容器运行时自动重启。
Docker tmpfs 删了 noexec,仍报 Permission denied
删除tmpfs参数里的noexec仍可能保留Docker默认限制。核对Engine选项合并与实际挂载,按批准范围显式配置exec。
Compose 构建正常,Dev Container 的 COPY 找不到文件:核对忽略规则
Dev Container生成扩展Dockerfile后,原专用忽略文件可能不再被选中。对照真实override和context,再审查根规则及镜像输入。
Compose 共享外部网络后,db 偶尔连到另一个项目
共享外部网络上的db别名可能同时属于两套数据库。对照实际Aliases和IP,改用唯一目标或保留私有网络,并验收数据环境。
依赖层摘要反复变化
相同 Boot JAR 的 dependencies 层摘要变化,可能是 tools extract 新建目录带了当时的 mtime。区分缓存复用和新层摘要,在受控提取阶段固定目录时间。
Docker 开启 userns-remap 后,root 也不能修改挂载文件
容器root无法修改绑定挂载文件时,核对UID/GID重映射与宿主数字权限,在专用目录落实授权,避免关闭隔离或递归放宽。
Docker 进程不多,exec 仍失败:检查线程是否用满 pids_limit
少量进程也可能因大量线程耗尽任务额度。对照cgroup当前值、上限和事件,定位线程来源,再调整并发或受控容量。
Docker CMD 报带方括号的 not found:检查数组是否漏逗号
CMD漏逗号可能被当成shell字符串,导致错误里出现方括号命令名。检查JSON与实际启动字段,保留原入口约定后重建验证。
Docker Compose 报外部网络不存在
Docker Compose 找不到声明为 external 的网络。核对实际网络名和 Docker Engine,按跨项目共享或项目内部使用选择创建网络、修正引用或交给 Compose 管理,并检查容器接入和业务连接。
Docker 修改日志大小上限后,旧容器的 json-file 日志仍持续增长
Docker 的日志默认值只作用于新建容器。通过 HostConfig.LogConfig 判断旧容器是否缺少大小限制,在保留数据和日志后更新服务配置并重建。


