当前位置: 首页 > article >正文

Docker容器启动失败的常见原因分析

我们在开发部署的时候,用 Docker 打包环境,理论上是“我装好了你就能跑”。但理想很丰满,现实往往一 docker run 下去就翻车了。

今天来盘点一下我实际工作中经常遇到的 Docker 容器启动失败的常见原因,顺便给点 debug 的小技巧,能让你从“容器起不来”到“稳稳跑起来”。


常见场景 1:镜像构建失败,容器压根没起来

很多人以为“容器起不来”就是 docker run 的问题,其实很多时候是在 docker build 阶段就翻车了。

典型报错:

failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /path/to/Dockerfile: no such file or directory

排查办法:

  • 检查 Dockerfile 路径是否正确;

  • docker build 命令中 -f 指定的路径是不是错了;

  • COPYADD 的源路径是不是写对了,尤其是“相对路径”。

小贴士:

如果你在构建时卡住了,可以加上 --progress=plain--no-cache 看得更清楚一点:

docker build --progress=plain --no-cache -t myimage .

常见场景 2:容器秒退,没有主进程 or 主进程挂了

这个是真·经典问题。

典型表现:

容器刚启动立刻就退出了。比如:

docker run myimage
# 几秒后
docker ps -a
# 状态为 Exited (1)

原因分析:

  • 没有前台进程。容器是以主进程是否在运行为准的,如果你在 Dockerfile 里 CMD ["nginx"] 启了个守护进程(daemon),容器就直接退出了。

  • 程序一启动就报错,直接崩了。

怎么查:

docker logs <container-id>

如果啥都没有,或者一眨眼就退了,可以加个 -it,手动起个 bash 看:

docker run -it myimage /bin/bash

常见场景 3:端口冲突 / 未暴露端口

报错不一定明确:

有时候你在宿主机开了某个端口(比如本地的 nginx 占了 80),你再用 -p 80:80 就起不来了。

解决办法:

  • docker ps 看看是不是端口已经被别的容器占用了;

  • 改用别的端口,比如:

docker run -p 8080:80 myimage

常见场景 4:环境变量配置错误

比如你 Dockerfile 里写了:

ENV DB_HOST=$DB_HOST

抱歉,这个语法会把 $DB_HOST 当成字面量(字符串),并不会替换成你主机环境里的变量。

正确姿势:

ARG DB_HOST
ENV DB_HOST=${DB_HOST}

然后 build 时传参:

docker build --build-arg DB_HOST=127.0.0.1 -t myimage .

或者更简单地,在 run 的时候用 -e 指定:

docker run -e DB_HOST=127.0.0.1 myimage

常见场景 5:文件权限问题

如果你在容器里挂载了宿主机的文件夹:

docker run -v /my/data:/app/data myimage

结果程序直接报权限错误,比如:

Permission denied: '/app/data/output.log'

原因:

容器里运行的用户没权限写这个挂载目录。

解决方法:

  • chown 改下宿主机的目录权限;

  • 或者加上 --user 参数运行容器:

docker run --user $(id -u):$(id -g) -v /my/data:/app/data myimage

最后一个大招:用 --entrypoint 开 bash 进去排查

如果你啥都试了都没搞明白,那最后一个招就是手动进去看:

docker run --entrypoint /bin/bash -it myimage

进去看看有没有路径写错,权限不对,环境变量没设之类的,通常都能找到线索。


小结

场景排查思路
镜像构建失败Dockerfile 路径、COPY 路径
容器秒退docker logs,看主进程是否正常运行
端口冲突换端口 or 检查是否被占用
环境变量问题检查是否正确设置 ENV / ARG
文件权限问题--user 或调整挂载目录权限
看不出问题--entrypoint /bin/bash 手动排查

写到这里你应该对“容器为啥起不来”有些眉目了。总之,多动手、多看 log、多试试 -it 进去看现场,慢慢你就会像老中医一样一眼看出问题所在了。

有别的翻车现场也欢迎留言分享,大家一起做个不怕起不来容器的狠人。

相关文章:

Docker容器启动失败的常见原因分析

我们在开发部署的时候&#xff0c;用 Docker 打包环境&#xff0c;理论上是“我装好了你就能跑”。但理想很丰满&#xff0c;现实往往一 docker run 下去就翻车了。 今天来盘点一下我实际工作中经常遇到的 Docker 容器启动失败的常见原因&#xff0c;顺便给点 debug 的小技巧&a…...

Java提取markdown中的表格

Java提取markdown中的表格 说明 这篇博文是一个舍近求远的操作&#xff0c;如果只需要要对markdown中的表格数据进行提取&#xff0c;完全可以通过正在表达式或者字符串切分来完成。但是鉴于学习的目的&#xff0c;这次采用了commonmark包中的工具来完成。具体实现过程如下 实…...

立志成为一名优秀测试开发工程师(第七天)——unittest框架的学习

目录 unittest框架的学习 一、测试类的编写 创建相关测试类cal.py、CountTest.py 二、常见断言方法 使用unittest单元测试框架编写测试用例CountTest.py 注意&#xff1a;执行的时候光标一定要放在括号后面&#xff0c;鼠标右键运行 三、对测试环境的初始化和清除模块…...

精益数据分析(85/126):营收阶段的核心指标与盈利模型优化——从数据到商业决策的落地

精益数据分析&#xff08;85/126&#xff09;&#xff1a;营收阶段的核心指标与盈利模型优化——从数据到商业决策的落地 c。 一、营收健康度的核心指标&#xff1a;投资回报率模型 &#xff08;一&#xff09;季度再发性营收增长率&#xff08;QRR&#xff09; 该指标衡量…...

论坛系统(4)

用户详情 获取用户信息 实现逻辑 ⽤⼾提交请求&#xff0c;服务器根据是否传⼊Id参数决定返回哪个⽤⼾的详情 1. 不传⽤⼾Id&#xff0c;返回当前登录⽤⼾的详情(从session获取) 2. 传⼊⽤⼾Id&#xff0c;返回指定Id的⽤⼾详情(根据用户id去查) 俩种方式获得用户信息 参…...

本地Markdown开源知识库选型指南

本地Markdown开源知识库选型指南 以下是几款优秀的本地Markdown开源知识库解决方案&#xff0c;适合不同需求场景&#xff1a; 1. Obsidian (非完全开源但免费) 特点&#xff1a;基于Markdown的本地优先知识管理&#xff0c;丰富的插件生态优势&#xff1a;双向链接、图形视…...

【.net core】SkiaSharp 如何在Linux上实现

1. 安装依赖库 首先需要安装 SkiaSharp 运行时依赖&#xff1a; # Ubuntu/Debian sudo apt-get update sudo apt-get install -y libfontconfig1 libfreetype6 libx11-6 libx11-xcb1 libxcb1 \libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 \libnss3 libcups2 lib…...

后端项目中静态文案国际化语言包构建选型

这是一个很关键的问题。在做国际化&#xff08;i18n&#xff09;时&#xff0c;不同语言包格式如 .resx、.properties 和 .json 都可用&#xff0c;但各自有适用场景、特性与限制&#xff0c;你在选择时可以根据你的开发语言、生态和维护成本权衡。 ✅ 一张对比表&#xff1a;.…...

前端面经 React常见的生命周期

初始化阶段 constructor state的初始化&#xff0c;防抖节流的绑定getDerivedStateFromProps 静态函数 当作纯函数使用 传入props和state&#xff0c;合并成一个新的statecomponentWillMount 组件如果有getDrivedStatefromprops不会执行 针对一些接口的预请求时使用rendercomp…...

力扣面试150题--二叉树的层平均值

Day 54 题目描述 思路 初次做法&#xff08;笨&#xff09;&#xff1a;使用两个队列&#xff0c;一个队列存放树的节点&#xff0c;一个队列存放对应节点的高度&#xff0c;使用x存放上一个节点&#xff0c;highb存放上一个节点的高度&#xff0c;sum存放当前层的节点值之和…...

【Doris入门】Doris初识:分布式分析型数据库的核心价值与架构解析

目录 1 Doris简介与核心价值 2 Doris架构深度解析 2.1 Frontend&#xff08;FE&#xff09;架构 2.2 Backend&#xff08;BE&#xff09;架构 3 Doris核心概念详解 3.1 数据分布模型 3.2 Tablet与Replica 3.3 数据模型 4 Doris关键技术解析 4.1 存储引擎 4.2 查询执…...

C#面试问题41-60

41. What is the Singleton design pattern? Singleton is a class that only allows creating a single instance of itselt. 单例设计模式是一个类&#xff0c;它只允许创建自己的单个实例。 构造函数防止他在单例类以外的地方被调用。 使用情景&#xff1a;need a sing…...

数据结构与算法学习笔记(Acwing 提高课)----动态规划·区间DP

数据结构与算法学习笔记----动态规划区间DP author: 明月清了个风 first publish time: 2025.5.26 ps⭐️区间DP的特征在于子结构一般是一个子区间上的问题&#xff0c;涉及到的问题也非常多&#xff0c;如环形区间&#xff0c;记录方案数&#xff0c;高精度&#xff0c;二维…...

【合集】Linux——31个普通信号

Linux普通信号总表&#xff08;1-31&#xff09;​​ ​编号​​信号名​​触发原因​​默认动作​1SIGHUP终端连接断开&#xff08;如SSH会话终止&#xff09;或守护进程重载配置&#xff08;如nginx -s reload&#xff09;终止进程2SIGINT用户输入CtrlC中断前台进程终止进程…...

从0到1搭建AI绘画模型:Stable Diffusion微调全流程避坑指南

从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南摘要引言一、数据集构…...

ASP.NET Core 中JWT的基本使用

文章目录 前言一、JWT与RBAC二、JWT 的作用三、RBAC 的核心思想四、使用1、配置文件 (appsettings.json)2、JWT配置模型 (Entity/JwtSettings.cs)3、服务扩展类&#xff0c;JWT配置 (Extensions/ServiceExtensions.cs)4、用户仓库接口服务5、认证服务 (Interface/IAuthService.…...

未来技术展望

应用场景:海量数据并行处理 技术融合: # 概念代码:量子加速的数据清洗 from quantum_processor import PhotonicProcessordef quantum_data_cleaning(data):# 使用光量子处理器并行处理千万级数据processor = PhotonicProcessor(model="Xanadu Borealis")return …...

从一到无穷大 #46:探讨时序数据库Deduplicate与Compaction的设计权衡

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言Compaction AlgorithmsCompact Execution Flow Based On VeloxLocalMergeSource的…...

vue3 导出excel

需求&#xff1a;导出自带格式的excel表格 1.自定义二维数组格式 导出 全部代码&#xff1a; <el-button click"exportExcel">导出</el-button> const exportExcel () > {const data [[商品, 单价, 数量, 总价],[A, 100, 1.55, { t: n, f: B2*C2…...

带你手写React中的useReducer函数。(底层实现)

文章目录 前言一、为什么需要 Reducer&#xff1f;二、Reducer 的核心概念1. Reducer 函数2. useReducer 钩子 三&#xff0c;手写react中的useReducer 总结 前言 在 React 开发中&#xff0c;useReducer 是管理复杂状态逻辑的利器。它类似于 Redux 的简化版&#xff0c;允许我…...

day024-网络基础-TCP与UDP、DNS

文章目录 1. 李导推荐书籍2. OSI七层模型2.1 传输层2.2 网络层2.2.1 问&#xff1a;两端处于不同局域网的设备怎么网络通信&#xff1f; 2.3 数据链路层2.4 物理层2.5 图解OSI七层模型 3. 数据传输模式3.1 全双工3.2 半双工3.3 单工 4. TCP 3次握手4.1 抓包 5. TCP 4次挥手5.1 …...

专场回顾 | 重新定义交互,智能硬件的未来设计

自2022年起&#xff0c;中国智能硬件行业呈现出蓬勃发展的态势&#xff0c;市场规模不断扩大。一个多月前&#xff0c;“小智AI”在短视频平台的爆火将智能硬件带向了大众视野&#xff0c;也意味着智能硬件已不再仅仅停留在概念和技术层面&#xff0c;而是加速迈向实际落地应用…...

如何把一台电脑作为另外一台电脑的显示器

https://zhuanlan.zhihu.com/p/703889583 1. 两台电脑都要进行&#xff1a;点开投影到此电脑&#xff0c;点击可选功能&#xff0c;在可选功能窗口&#xff0c;搜索无线显示器&#xff1b;在结果列表中选中无线显示器&#xff0c;并安装 2. 在笔记本电脑&#xff08;要用来做…...

WPS 免登录解锁编辑

遇到 WPS 需要登录才能启用编辑功能&#xff1f; 如何免登录使用编辑功能&#xff1f; 方法一 解锁方法 1、关闭 WPS&#xff1b; 2、桌面右键→ “新建”→“文本文档”&#xff0c;粘贴以下内容&#xff08;见最下面&#xff09;&#xff1b;编码保持默认&#xff08;ANSI …...

【C/C++】线程安全初始化:std::call_once详解

std::call_once 使用详解 std::call_once 是 C11 标准库中提供的一个线程安全的一次性调用机制&#xff0c;位于 <mutex> 头文件中。它确保某个可调用对象只被执行一次&#xff0c;即使多个线程同时尝试调用它。 基本用法 #include <mutex> #include <thread…...

技术分享 | Oracle SQL优化案例一则

本文为墨天轮数据库管理服务团队第70期技术分享&#xff0c;内容原创&#xff0c;作者为技术顾问马奕璇&#xff0c;如需转载请联系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明来源。 一、问题概述 开发人员反映有条跑批语句在测试环境执行了很久都没结束&…...

​什么是RFID电子标签​

RFID 电子标签是用于物品标识、具有信息存储机制、能接收读写器的电磁场调制信号并返回响应信号的数据载体,通常被称为电子标签,也可称作射频卡、射频标签、射频卷标等,是与读写器一起构成 RFID 系统的硬件主体。 RFID 系统基本组成包括RFID电子标签、读写器、射频天线、应用…...

华为手机用的时间长了,提示手机电池性能下降,需要去换电池吗?平时要怎么用能让电池寿命长久一些?

华为手机提示电池性能下降时&#xff0c;是否需要更换电池以及如何延长电池寿命&#xff0c;取决于电池老化程度和使用习惯。以下是具体分析和建议&#xff1a; 一、是否需要更换电池&#xff1f; 电池健康度低于80% 如果手机提示“电池性能下降”&#xff0c;通常意味着电池…...

BERT***

​​1.预训练&#xff08;Pre-training&#xff09;​​ 是深度学习中的一种训练策略&#xff0c;指在大规模无标注数据上预先训练模型&#xff0c;使其学习通用的特征表示&#xff0c;再通过​​微调&#xff08;Fine-tuning&#xff09;​​ 适配到具体任务 2.sentence-lev…...

超级对话2:大跨界且大综合的学问融智学应用场景述评(不同第三方的回应)之二

摘要&#xff1a;《人机协同文明升维行动框架》提出以HIAICI/W公式推动认知革命&#xff0c;构建三大落地场景&#xff1a;1&#xff09;低成本认知增强神经接口实现300%学习效率提升&#xff1b;2&#xff09;全球学科活动化闪电战快速转化知识体系&#xff1b;3&#xff09;人…...