容器部署失败?
麒麟服务器上容器拉取/运行失败的常见原因:运行时服务没起、镜像拉不到(网络或仓库)、内核参数与 cgroup 限制、SELinux 拦挂载,给分层排查命令。
简短答案
容器”部署失败”要先分清坏在哪层:运行时没起(服务异常/内核参数缺失)、拉镜像失败(网络或仓库权限)、运行失败(资源限制、挂载被 SELinux 拦)。按这三层分诊,别对着报错硬试。
现象对照表
| 现象 | 层 | 常见原因 |
|---|---|---|
Cannot connect to the Docker daemon |
运行时 | 服务没起或没登录 |
| 拉镜像超时/401 | 镜像 | 网络不通或仓库未登录 |
| 起来就退出 / 挂载失败 | 运行 | SELinux 拦截、资源超限 |
| 批量部署个别机失败 | 混合 | 该节点内核参数或 cgroup v2 不一致 |
排查步骤
# 运行时层
systemctl status 容器运行时服务
journalctl -u 容器运行时服务 --no-pager | tail -30
# 镜像层:先网络后权限
curl -sI 镜像仓库地址
docker login 仓库域名 # 私有仓库时
# 运行层:看容器自身日志
docker ps -a
docker logs 容器ID
# SELinux 是否拦了挂载
ausearch -m av -ts recent | grep denied | head
个别节点批量失败时,优先比对成功与失败节点的内核参数和 cgroup 版本,而不是逐台重装。
处理办法
- 运行时服务异常:按 journal 日志定位(内核模块缺失、依赖服务未起);
- 私有仓库 401:确认登录与镜像拉取地址一致;
- SELinux 拦挂载:先切 permissive 复现,再收窄策略;基线对照 服务器 V11 条目;
- 整节点重置:介质取 银河麒麟镜像列表,按 Rufus 启动盘条目 制作 U 盘。
操作小结
- 先分三层(运行时/镜像/运行);
- 每层用上面的命令定界;
- 批量失败先比对节点差异;
- SELinux 相关先止血后收窄。