容器部署
共 203 篇文章
Docker 设置 --memory 后,free 仍显示宿主机总内存
区分 free 的系统内存视图与容器 cgroup 限额,检查 Docker 保存的配置和 cgroup v2 控制文件,避免把显示总量当成限制失效。
Docker 单文件挂载后,容器读到的配置没有更新
宿主机保存了配置,Docker 容器仍读到旧内容。单文件绑定挂载遇到文件替换时可能保留旧对象;通过挂载路径、内容摘要和 inode 缩小范围,再选择重建容器或改为专用目录挂载。
docker commit 后新容器缺少文件:挂载卷不会打入镜像
容器挂载目录的文件不会随 docker commit 或 export 带走。核对实际卷名,同机重新挂载,跨主机分离备份与镜像,并保留一致性和回退条件。
Docker Compose 2.29.6 报 extra_hosts array items must be unique
Docker Compose 2.29.6 在继承或多文件合并后可能报 extra_hosts 条目不唯一。沿配置来源区分重复声明与版本缺陷,保留必要映射,并在更新插件后核对实际合并结果。
Kubernetes 私有镜像报 ImagePullBackOff:Secret 必须和实际 Pod 在同一命名空间
私有镜像在其他工作负载能拉取,新 Pod 却 ImagePullBackOff。核对实际 namespace、Secret 引用与遗留同名对象,不把凭据跨空间使用。
Docker build 已传 build-arg,FROM 后的变量仍为空
Docker 构建参数传入后仍为空,可能是 ARG 只声明在首个 FROM 之前。区分全局与阶段作用域、阶段继承及 ENV 覆盖,给出默认值和显式值的验证方式。
Docker Compose 报 service_completed_successfully 是无效条件
depends_on 拒绝 service_completed_successfully 时,核对实际调用的 Compose 版本和路径,区分旧独立程序与插件,保留迁移成功完成的启动条件。
Docker 挂载目录报 Permission denied:确认 SELinux 标签与共享范围
Docker bind mount 报 Permission denied 时,先核对普通权限与 SELinux 审计,再决定私有 Z 或共享 z 标签、容器重建及宿主标签恢复范围。
Docker 容器启动后,宿主机新挂载的 USB 目录仍显示为空
Linux Docker bind mount 默认 rprivate,不会接收后来创建的子挂载。核对宿主机 shared 条件,再选择 rslave 单向传播或先挂载后创建容器。
ECK 修改存储模板报 Any other change is forbidden:先区分扩容与换盘
ECK 更新 volumeClaimTemplates 被拒绝时,对照已有 NodeSet 判断扩容、换 StorageClass 和减小容量,按 Operator 管理流程处理并保护数据。
开启 hostNetwork 后 Service 名称解析失败:ClusterFirst 可能退回节点 DNS
普通 Pod 能解析 Service,hostNetwork Pod 却失败时,检查 ClusterFirst 是否退回节点 DNS。按 Linux 适用条件设置策略,并区分命名空间与 DNS 可达性。
Docker Compose run 启动后 ports 未映射到宿主机
Compose 文件声明了 ports,但 run 默认不为任务容器发布这些端口。通过容器 ID 核对映射,再选择 --service-ports、临时 -p 映射或 up 启动常驻服务。
Docker 挂载报 mount path must be absolute
Linux 容器的挂载目标必须是绝对路径。区分宿主 source 与容器 target,通过 Compose 长语法核对最终配置,避免 working_dir 和宿主路径掩盖错误。
ConfigMap 已修改,Pod 环境变量仍是旧值:更新不会自动替换进程环境
通过ConfigMap注入的环境变量不会随对象更新自动刷新。核对消费方式,评估rollout与版本化配置,并避免把Deployment回滚当作数据回滚。
Docker logs 没有应用日志,容器中的 nohup.out 却一直增长
nohup.out 有日志而 docker logs 没内容时,区分应用文件输出与 Docker 日志驱动;保留现有日志,再调整前台运行、标准流或持久文件采集。
Alpine 容器 tar 报 Operation not permitted:检查 fchmodat2 与运行时策略
Alpine 容器 tar 报 Operation not permitted 时,区分文件权限与 fchmodat2 策略拒绝,核对实际 Docker、BuildKit 和 libseccomp,撤回放宽隔离的诊断例外。
Docker 构建在大 UID 的 useradd 步骤卡住并大量占用磁盘
Linux 镜像创建大 UID 账号时,lastlog 或 faillog 初始化可能产生巨大稀疏记录并拖慢层处理。使用支持该选项的 useradd --no-log-init,保留原身份并验证磁盘占用。
Docker run 加 -t 后,标准错误混进标准输出文件
Docker 分配伪终端后,应用 stdout 和 stderr 会合并。移除 -t、按需保留 -i,并区分应用日志、客户端错误和已有容器的 TTY 配置。
docker top 和容器内 ps 显示不同 PID,按进程号诊断时找不到目标
docker top 与容器内 ps 使用不同的 PID 视角。限定原生 Linux 环境,用命名空间状态字段核对对应关系,避免读错 /proc 路径或复用已过期的进程号。


