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

Docker Compose v2 启动报错 standard_init_linux.go:228 怎么办?

Docker Compose v2 启动报错 standard_init_linux.go:228 怎么办?

根据 2025 年 5 月 30 日的实际案例分析,该错误在 JDK 从 1.8 升级到 21 版本的容器化部署中出现频率显著增加,主要原因是机器架构与 Docker 镜像架构不匹配导致。

原因分析

standard_init_linux.go:228 错误主要分为两类:一是exec user process caused: no such file or directory,二是exec user process caused: exec format error。根据 2024 年 1 月 18 日的技术分析,第一种错误通常由以下原因造成:镜像中不存在指定的可执行文件或目录、文件或目录的路径不正确、文件或目录的权限设置不正确。第二种错误则表明 Docker 试图执行容器内的某个可执行文件时遇到了格式问题,通常是因为可执行文件的格式与容器操作系统不兼容。

根据 2021 年 12 月 17 日博客园的记录,Windows 系统的默认代码格式是 dos,而 Linux 系统的默认代码格式是 unix,如果使用 dos 格式进行代码编写,在编译为 docker 镜像之后,Docker 的启动脚本 (例如 entry-point.sh) 文本内容的每一行都会被自动添加上一个^W 标识,造成解析错误。

解决方案

方案一:检查并修复脚本文件格式

根据截至 2026 年 4 月 6 日的技术资料,使用 vi 打开文件,查看文件的格式::set ff,输出时fileformat=dos则说明是 Windows 格式脚本。将文件改成 Linux 格式::set ff=unix。或者在 Dockerfile 中添加以下命令进行批量转换:

RUN dos2unix *.sh
RUN dos2unix *.yml
CMD "dos2unix *.properties"

此方案适用于在 Windows 环境下编写脚本后构建镜像的场景,2024 年 6 月 12 日的搜索结果显示这是最常见的解决方法。

方案二:检查镜像架构匹配性

根据 2025 年 5 月 30 日的 JDK 升级案例,首先查看 Docker 镜像的架构:docker inspect --format='{{.Architecture}}' docker.io/openjdk:21,结果显示 openjdk:21 适用的机器架构为 arm64。然后查看机器的架构,如果是部署在 k8s 容器里,执行kubectl get nodes -o wide,可以看到架构为 x86_64,也即 amd64。

解决方案是指定架构拉取镜像:docker pull --platform linux/amd64 openjdk:21-ea-34-jdk。然后在 Dockerfile 中使用匹配的镜像:FROM xxx-harbor-registry.cn-hangzhou.cr.aliyuncs.com/xx_tool/openjdk:21-ea-34-jdk

方案三:检查文件权限和路径

根据 2024 年 1 月 5 日的资料,确保可执行文件或目录的权限设置正确。可以使用以下命令在镜像中检查文件或目录的权限:docker run -it --rm myimage:latest ls -l /usr/local/bin/my_executable。如果权限设置不正确,使用以下命令更改:docker run -it --rm -v /path/to/my_executable:/tmp/my_executable myimage:latest chmod +x /tmp/my_executable

同时检查文件是否正确复制到镜像里:RUN ls -al /opt/zxapp,如果文件都在,则基本可以确定是 windows 编码与 unix 不一致问题导致的。

注意事项

根据 2026 年 2 月 2 日的 Docker Compose 常见错误分析,频繁地进行容器重建会导致构建时间从原来的 1 分钟增加到 10 分钟,建议在开发过程中最大化缓存来优化 Dockerfile。

2025 年 3 月 24 日的资料提醒,排查镜像是否完整时可采用重新下载镜像方法,把所有的相关的镜像都需要删掉,然后重新执行docker pull 镜像

根据 2024 年 1 月 18 日的技术建议,如果你在容器内运行的可执行文件是动态链接的,尝试使用静态编译的版本,这样可以确保可执行文件在容器内运行时不会出现动态链接问题。

参考来源

来源:博客园 - 运行 docker 容器时报错 exec user process caused "no such file or directory"(2021 年 12 月 17 日)

来源:CSDN - 容器化部署之 JDK 升级为 21 版本程序启动报错(2025 年 5 月 30 日)

来源:技术社区 - 解决 Docker 报错 standard init linux.go:228(2024 年 1 月 18 日)

来源:开发者论坛 - Docker Compose 5 种常见错误(2026 年 2 月 2 日)

原文链接:https://www.zjcp.cc/ask/9819.html

http://www.jsqmd.com/news/758294/

相关文章:

  • 没有GPU也能玩转PINN?手把手教你用CPU在云服务器上跑通Burgers方程仿真
  • 如何快速制作专业地形高度图:开源工具的完整指南
  • 【限时开源】R 4.5专属微生物组多组学分析框架MicroBioSuite v1.2(含12个真实临床队列处理模板+GPU加速版DESeq2适配器)
  • 盐城宝盛设备租赁:阜宁蜘蛛车租赁推荐 - LYL仔仔
  • 基于AI与RSS的智能信息筛选:构建个人技术摘要系统
  • 告别卡顿!手把手教你用LoadRunner 12.55在Win11上搭建性能测试环境(附百度网盘资源)
  • 使用Nodejs和Taotoken构建一个简单的AI对话服务端
  • 联邦学习+区块链:数据“可用不可见”时代的信任与协作引擎
  • 别再手动画样本点了!用GEE+随机森林,10分钟搞定北京2023年土地利用分类
  • 新疆龙之筑建材:乌鲁木齐马路砖出售哪家好 - LYL仔仔
  • 紧急预警:Dify默认检索配置在SCADA日志分析中准确率暴跌至41%!立即执行这3项工业定制化修正
  • Rusted PackFile Manager (RPFM):全面战争MOD开发的终极效率工具
  • 终极免费激活方案:KMS智能脚本一键解决Windows和Office激活难题
  • RH850/F1L CAN总线调试避坑指南:从寄存器配置到实战通信的完整流程
  • 2026年5月雷达官方售后网点亲测报告:避坑指南与真实体验(含迁址/新开) - 亨得利官方服务中心
  • 告别理论推导:用Python+NumPy手把手模拟MSK信号生成与频谱分析
  • 内存峰值下降68%,吞吐翻倍:R 4.5分块处理的4层缓冲架构设计与实测对比报告
  • 亲测❗️2026年5月最新泰格豪雅官方售后网点验证报告(含迁址/新开)实地考察・多方数据 - 亨得利官方服务中心
  • 1000元中石化加油卡闲置?教你一招安全变现,轻松提到微信/支付宝使用! - 畅回收小程序
  • 使用 taotoken 后 api 调用延迟与稳定性的实际观测与感受分享
  • 计算机毕业设计 | SpringBoot+vue人口老龄化社区服务与管理平台(附源码+论文)
  • SLA2:稀疏计算与注意力机制融合的高效Transformer架构
  • 通过用量看板清晰掌握团队月度大模型调用成本
  • YOLOv8模型部署踩坑实录:从PyTorch到ONNX,再到Gradio Web部署的完整避坑指南
  • 别再只盯着JProfiler了!用YourKit Java Profiler 2022.9排查线上服务内存泄漏实战
  • 【Blender 2026最新版】Blender下载安装教程 2026最新版详细图文安装教程(附安装包,超详细)
  • MATLAB 实现平板裂纹扩展模拟、气孔夹杂物分析
  • 汕头市冠粤发起重吊装:潮州可靠的大件移位公司电话 - LYL仔仔
  • KMS智能激活脚本:免费永久激活Windows和Office的终极解决方案
  • 在多轮对话应用中集成Taotoken以提升服务稳定性与弹性