#Docker
共 146 篇文章
Docker Compose 配置 GPU 后报 devices was unexpected
GPU 镜像能单独运行,Compose 却拒绝 reservations 下的 devices,可能是实际调用了不支持设备请求的旧程序。核对入口、升级插件,再分别验证配置和 GPU 访问。
Dockerfile 执行 RUN cd 后,下一条 RUN 仍找不到项目文件
RUN cd 成功但后续构建找不到 Makefile 时,核对每条 RUN 的实际目录;选择 WORKDIR 或同一 shell 步骤,检查运行时目录覆盖。
Docker Compose down 报 active endpoints:共享网络仍被其他容器使用
Compose 停止前端时,共享网络仍有后端或数据库连接。核对端点、项目名与外部网络生命周期,避免误删依赖服务。
RUN 已生成目录,Docker COPY 仍报 file not found:源文件选错了位置
RUN 生成的目录不是普通 COPY 的上下文来源。按同阶段和跨阶段选择 RUN cp 或 COPY --from,核对最终产物路径与秘密处理。
Docker Compose 配置了 env_file 仍提示变量未设置
Docker Compose 声明 env_file 后仍提示变量未设置,可能是 environment 的插值空值覆盖了文件内容。区分容器环境与 CLI 插值,按用途调整配置,并在重建服务前检查最终模型。
Docker 使用数组入口后,Ctrl-C 仍无法结束 PID 1 服务
Linux 容器里的 PID 1 未设置相应信号处理时,不能依赖普通进程的默认退出行为。区分前台连接与日志跟随,用 init 验证,并单独检查业务清理和停止信号。
Docker 已发布端口仍连不上:nREPL 监听在容器回环地址
nREPL 只监听容器回环时,已有 Docker 端口发布仍无法到达。调整应用 bind,并把宿主机入口限制到本地或受控 SSH 隧道。
Docker tmpfs 已可写,非 root 进程仍报 Permission denied
核对临时挂载的实际 UID、GID 与权限,用 Compose tmpfs 选项匹配应用账户,并验证容器重建和重启后的状态。
Docker 退出 137,OOMKilled 却为 false:区分 SIGKILL 与内存不足
Docker 退出 137 并不直接证明内存耗尽。结合容器状态、事件、停止操作与实际宿主机记录,区分强杀、停止超时和 OOM,再决定修复与验收范围。
Docker macvlan 在局域网能访问,宿主机却连不上:检查 parent 隔离
局域网其他机器能访问 macvlan 容器,唯独宿主 parent 接口不能直连。区分内核隔离与其他故障,按目标地址约束选择 bridge 或宿主子接口路径。
Docker host 网络报 sysctl not allowed in host network namespace
host网络与容器级net.sysctl冲突,运行时拒绝创建。核对合并配置,按独立网络或宿主参数方案处理,再验收应用通信。
Docker 拉取 HTTP 仓库报 server gave HTTP response to HTTPS client
HTTP仓库的例外需由实际拉取daemon读取。检查context、完整镜像地址和生效配置,区分协议、证书与后续认证错误。
pack build 报 fully subnetted:地址池只能分出一个子网
pack build 创建临时网络报 fully subnetted 时,核对 default-address-pools 的 base 与 size、现有网络和宿主路由,再安排容量调整及回退。
Dockerfile 写入 /etc/hosts 报 Read-only file system
Linux BuildKit 为 RUN 提供受管的只读 hosts 挂载。通过构建参数 add-host 传入名称映射,分别核对构建端点、实际连接和运行时配置。
PostgreSQL 18 挂载 /var/lib/postgresql/data 后启动失败
官方 PostgreSQL 18 镜像改用主版本数据子目录,旧挂载可能报 runc 错误或 unused mount/volume。确认实际卷与数据版本,修正空目录部署,并区分挂载调整和数据库升级。
Docker CMD 收到字面量 ${STACK}:exec 形式不会展开容器环境变量
容器环境变量已经设置,CMD 参数却仍是 ${STACK}。核对入口与参数,使用应用环境配置或包装脚本,保留参数边界及原初始化步骤。
Docker --mount 路径含逗号,报 unexpected key
路径中的逗号会被Docker挂载参数按CSV拆开。保留整个src字段的双引号,区分shell引用、CSV格式与后续源路径错误。


