#Docker
共 146 篇文章
Docker 已映射端口,UDP 服务仍收不到请求
Docker 的 -p 默认发布 TCP。分别核对 UDP 与 TCP 映射,在原启动或 Compose 配置中明确 /udp,再重建服务并用应用请求验证。
docker cp 从标准输入写文件时报 must be a directory
docker cp 的标准输入接收 tar 归档,目标必须是解包目录。区分普通文件复制与归档流传输,避免把原始文本或归档输出误当作文件内容。
多阶段 Docker 镜像仍含 .git:.dockerignore 不过滤 COPY --from 的阶段产物
构建阶段生成或下载的文件不受本地上下文忽略规则过滤;将发布产物放到独立输出目录,再从该目录复制,检查最终镜像而非运行挂载。
Docker 拉取镜像报 no space left on device
镜像解压报 no space left on device,但磁盘仍有余量时,检查实际存储文件系统的 inode,定位占用并清理可重建缓存;迁移前区分 Docker 与 containerd 数据目录。
PostgreSQL 备份报 server version mismatch:检查运行 pg_dump 的容器
数据库升级后 pg_dump 仍来自旧备份容器,导致 server version mismatch。核对两端主版本、调用匹配客户端,并让失败退出码、归档检查和隔离恢复成为验收条件。
Docker Compose 升级应用后,旧覆盖文件导致服务缺少 image 或 build
应用升级移除了旧服务,本地 Compose 覆盖文件仍保留它的配置,合并后便可能报缺少 image 或 build。通过分开校验文件定位残留,迁移有效设置,并核对服务清单与数据挂载。
Git 已设置 safe.directory,后续命令仍报 dubious ownership
checkout 成功,后续 Git 命令仍报 dubious ownership 时,在失败步骤中核对用户、HOME、仓库路径和配置来源,只为确认可信的目录添加例外。
Docker Compose 环境变量含 ${Time.now} 时报 Invalid interpolation format
Compose 把应用需要的 ${Time.now} 当成变量表达式时,使用双美元符号保留原文,并区分 YAML、环境文件和 shell 的解析阶段,验证容器收到的值。
Linux Docker 容器无法解析 host.docker.internal
Linux Docker 容器访问 host.docker.internal 提示无法解析。为现有 Compose 服务添加 host-gateway 映射,重建后分别验证容器 hosts、系统解析与宿主机服务连接,并处理监听地址不匹配。
Docker Git 上下文构建报 /.git not found
Git 上下文默认不保留 .git,忽略规则例外不能恢复它。用预定义参数保留构建所需仓库信息,或明确选择路径上下文,并限制最终产物。
Docker 登录成功,push 仍 denied:检查镜像是否带 Docker Hub namespace
登录成功只证明认证完成。推送目标若落到 docker.io/library,应为本地镜像添加有写入权限的 namespace 标签。
Docker Compose 写了两个 command,初始化命令没有执行
Docker Compose 同一服务重复写 command 不能按顺序执行初始化和主程序。说明单个 command 配合 sh -c、初始化失败阻断、ENTRYPOINT 参数冲突,以及重建后的验证和数据回退边界。
Docker 挂载配置文件报 not a directory:为什么宿主机多了一个同名目录
配置文件挂载时报 not a directory,核对 Compose 最终路径、源文件类型与容器目标,用 create_host_path: false 阻止误建目录,再重建和验证受影响的服务。
Docker 设置 --cpus=1 后,nproc 仍显示多个处理器
--cpus 限制 CPU 时间配额,--cpuset-cpus 限制可调度的处理器集合。核对 Docker 配置与 nproc 实现,区分 GNU coreutils 9.8 的 cgroup v2 行为。
Docker Compose 环境变量报 contains true, which is an invalid type
Compose 环境变量报 contains true, which is an invalid type 时,检查 environment 映射中的裸布尔值。用引号保留字符串,核验最终配置,并区分类型校验通过与应用开关实际生效。
Docker COPY 无法读取构建上下文外的文件
Dockerfile 使用 COPY ../ 读取父目录文件时,传统构建器会拒绝越界,BuildKit 则会去掉越界路径。按构建上下文调整源路径,并核对 Compose 配置与 .dockerignore。
ARM64 主机构建 Docker 镜像时,/bin/sh 报 exec format error
ARM64 Linux 主机构建镜像时,第一条 RUN 就报 /bin/sh: exec format error,可先核对构建节点、基础镜像平台与模拟能力,再选择原生 ARM64 或明确的 amd64 构建路径。
Compose 服务能解析内网域名,构建 RUN 却解析失败
服务 networks 不决定构建 RUN 的网络。区分 BuildKit 网络模式与项目网络,并在固定端点场景配置构建侧名称映射。
Docker Compose 启动时报 no service selected
Compose 文件中的服务都设置了 profiles,却没有启用匹配的 profile 时,up 可能报 no service selected。对比服务列表,按需启用 profile、指定服务,或恢复核心服务的默认启动方式。


