猫头虎分享云原生疑难杂Bug :RunContainerError: “OCI runtime create failed: container_linux.go:349: starting co

【Docker】常见容器问题解决#OCI runtime create failed: container_linux.go:349: starting container process ERROR: for nginx Cannot start service nginx: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/data/docker-compose/n 阅读详情

猫头虎分享云原生疑难杂Bug 🐯:RunContainerError: "OCI runtime create failed: container_linux.go:349: starting container process caused “exec: “nonexistent-command”: executable file not found in $PATH”. 解决方案 🚀

摘要

今天猫头虎 🐯 遇到一位粉丝的提问:在部署容器时,他收到了一条令人困惑的错误消息—— "RunContainerError: OCI runtime create failed: container_linux.go:349: starting container process caused ‘exec: “nonexistent-command”: executable file not found in $PATH’ "。这个错误看似简单,但很多开发者在构建 云原生应用 时都会碰到类似的情况。在这篇文章中,猫头虎将带大家 逐步剖析错误原因、提供解决方案,以及详细讨论如何避免此类问题。


猫头虎是谁?

大家好,我是 猫头虎,猫头虎技术团队创始人,也被大家称为猫哥。我目前是COC北京城市开发者社区主理人、COC西安城市开发者社区主理人,以及云原生开发者社区主理人,在多个技术领域如云原生、前端、后端、运维和AI都具备丰富经验。

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用方法、前沿科技资讯、产品评测、产品使用体验,以及产品优缺点分析、横向对比、技术沙龙参会体验等。我的分享聚焦于云服务产品评测、AI产品对比、开发板性能测试和技术报告。

目前,我活跃在优快云、51CTO、腾讯云、阿里云开发者社区、知乎、微信公众号、视频号、抖音、B站、小红书等平台,全网粉丝已超过30万。我所有平台的IP名称统一为猫头虎或猫头虎技术团队。

我希望通过我的分享,帮助大家更好地掌握和使用各种技术产品,提升开发效率与体验。


作者名片 ✍️

  • 博主:猫头虎
  • 全网搜索关键词:猫头虎
  • 作者微信号:Libin9iOak
  • 作者公众号:猫头虎技术团队
  • 更新日期:2024年10月10日
  • 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!

加入我们AI共创团队 🌐

加入猫头虎的共创圈,一起探索编程世界的无限可能! 🚀

部分专栏链接:

🔗 精选专栏:



猫头虎


🧩 错误分析及原因探讨

在云原生环境下,构建和运行容器的过程中,常见的 RunContainerError 表示容器在启动过程中遇到阻碍,具体原因通常由多个因素引起。本次错误代码中的信息显示:

"OCI runtime create failed: container_linux.go:349: starting container process caused ‘exec: “nonexistent-command”: executable file not found in $PATH’ ".

这段信息重点包含以下几点:

  1. OCI runtime create failed:指容器启动失败,OCI (Open Container Initiative) 是用于创建和运行容器的规范。
  2. “exec: “nonexistent-command”: executable file not found in $PATH”:说明容器尝试执行的命令不存在或未找到。

🔍 深入分析

该问题往往出现在以下几个情境中:

  • Dockerfile 配置错误:在 Dockerfile 中定义了错误的可执行文件名称,导致在构建镜像时无法找到。
  • 镜像内缺失命令:镜像中没有包含指定命令。
  • 文件路径未正确指定:可执行文件未放置在镜像中正确的文件路径下。

🚀 解决方案详解

方案一:检查 Dockerfile 配置 📝

💡 关键步骤: 检查 Dockerfile 中的 CMD 或 ENTRYPOINT 命令。

  1. 打开 Dockerfile 文件,并确认文件中是否正确指定了启动命令:

    # 示例
    FROM ubuntu:latest
    CMD ["nonexistent-command"]
    

    在上例中,CMD 指定了一个不可执行的命令。

  2. 确保 CMD 或 ENTRYPOINT 所调用的命令已安装在镜像内:

    • 可以尝试将 nonexistent-command 替换为系统自带命令如 echo 或 ls,确保 Dockerfile 格式无误。

方案二:在镜像中安装缺少的命令 🛠️

💡 关键步骤:确保所需命令已正确安装并位于 $PATH 中。

  1. 编辑 Dockerfile,在 RUN 指令中加入命令的安装步骤,例如:

    # 示例:安装 curl
    FROM ubuntu:latest
    RUN apt-get update && apt-get install -y curl
    CMD ["curl", "--version"]
    
  2. 构建并运行镜像以确认命令正确安装:

    docker build -t myimage .
    docker run myimage
    

方案三:使用绝对路径调用命令 🔍

💡 关键步骤:确保命令的路径明确。

在容器中运行命令时,直接使用绝对路径(如 /usr/bin/command),避免路径变量问题:

CMD ["/usr/bin/yourcommand"]

方案四:测试镜像内容以查找错误命令 🛠️

有时,我们可以进入容器的交互式 shell 中查找命令路径。执行以下命令来查看文件结构:

docker run -it myimage /bin/bash

通过以下命令检查命令是否存在:

which nonexistent-command
# 如果命令不存在,会返回空白

📘 Q&A 常见问题解答

Q1: 为什么会出现“文件未找到”的错误?

A: 通常是由于 Dockerfile 中配置错误或镜像本身缺少对应的命令引起的。确保命令已安装且配置路径正确。

Q2: 我可以在 Dockerfile 之外指定启动命令吗?

A: 可以!可以通过 docker run 命令手动覆盖镜像启动命令。例如:

docker run myimage /bin/bash -c "yourcommand"

Q3: 如何避免类似的问题?

A: 可以在开发过程中使用 which 或 command -v 来确认命令路径。将这些验证步骤添加到 Dockerfile 的构建流程中是一个良好习惯。


📊 总结及未来展望

错误原因解决方法预防方法
配置错误检查 Dockerfile 的 CMD、ENTRYPOINT定期检查和更新镜像配置
镜像内命令缺失安装所需命令使用多阶段构建并减少冗余
路径问题使用绝对路径确保常用命令在 $PATH 中

📝 本文总结

猫头虎 分享的这一解决方案适用于 开发中遇到容器启动错误 的场景,避免因 Dockerfile 配置不当或路径问题导致部署失败。未来,随着 OCI 规范的普及和容器生态的升级,镜像和命令管理将会更具智能化,为开发者提供更好的自动化错误检查和配置优化功能。


更多最新AI云原生资讯欢迎点击文末加入猫头虎AI共创社群 🚀

猫头虎


👉 更多信息:有任何疑问或者需要进一步探讨的内容,欢迎点击文末名片获取更多信息。我是猫头虎博主,期待与您的交流! 🦉💬
猫头虎


联系我与版权声明 📩

  • 联系方式:
    • 微信: Libin9iOak
    • 公众号: 猫头虎技术团队
  • 版权声明:
    本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页。

点击✨⬇️下方名片⬇️✨,加入猫头虎AI共创社群矩阵。一起探索科技的未来,共同成长。🚀

【Docker】OCI runtime exec failed: exec failed: container_linux.go:348: starting container process cau 1.背景 docker执行命令 (base) lcc@lcc flink-1.10.0$ docker exec -it mysqld-exporter /bin/bash OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknow. 阅读详情

相关推荐

微信支付V2,jsapi支付拉起收银台报错:调用支付JSAPI缺少参数:total_fee

拉起收银台报错

m0_54355172的博客 3873

OCI runtime create failed: container_linux.go:349: starting container process caused “exec: “bash“:

docker save 用于持久化镜像,导出的tar包需要用 docker load imagedata.tar 导入 会将镜像的所有layer导出,导出的文件会比较大。 docker load 不可指定镜像名和tar。 docker import 可以指定镜像名和tar 可用 sudo docker images --tree 查看镜像的layer docker export 用于持久化容器。导出成tar包需要用 docker import 导入 丢失所有元数据,只保存虚拟机的当前状态。 坑 这四

Twilight's Blog 8788

手把手教你用 Docker 构建自己的 CentOS 基础镜像

目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏...

Nick.Peng's Blogs 1万+

docker部署使用,初始化镜像报错OCI runtime create failed: container_linux.go:349

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"write /proc/self/attr/keycreate: permission denied\"": unknown.

m0_71829747的博客 4134

ESD放电路径分析

当金属外壳接地情况下,大部分外部干扰信号将会通过外壳,外壳到接地点,再由接地点回到干扰信号的地,实现干扰信号的回流,这点不仅仅适用于​ESD,对于其他的RI类干扰,也同样适合。发现内部金属板跟外壳的搭接处存在较多的缝隙点,该缝隙点对于频率较高的信号能够实现较为理想的回流,但是对于频率没有那么高的信号,则较难以实现回流,我们尝试将这些缝隙用铜箔包裹住,充分降低该金属板跟外壳的接触阻抗​。我们分析,路径3其实是不期望的路径,我们最期望的路径是1,或者2的内部金属部件跟外壳良好接触情况下的路径。

domen_pan的博客 2228

测试dali协议的软件,DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议

DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议深圳聚积智能 夏先生 13246760327 QQ 349098308■IEC62386-102(V2.0)通过测试内容IEC62386-102/2.1/Test preambleIEC62386-102/3.1/Polarity testIEC62386-102/3.2/Maximum and minimum system v...

weixin_35343788的博客 1351

猫头虎分享云原生疑难杂Bug:RunContainerError: “OCI runtime create failed: container_linux.go:349: starting conta

今天猫头虎带您解决云原生环境中一个令人头疼的常见问题:RunContainerError: “OCI runtime create failed: container_linux.go:349: starting container process caused ‘exec: “nonexistent-command”: executable file not found in $PATH’” 解决方案 🐱‍💻🚀

GoCloudNative - 云原生技术的探索者。 1487

51单片机矩阵键盘——LCD1602显示

矩阵键盘扫描(输入扫描) 原理:读取第1行(列)→读取第2行(列) →读取第3行(列) → ……,然后快速循环这个过程,最终实现所有按键同时检测的效果 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。

YLG_lin的博客 9853

OCI runtime exec failed: exec failed: container_linux.go:349: starting container 解决方法

docker执行命令:docker exec -it redis1 /bin/bash 在进入容器报错:OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown 报错场景:我是pull了一个registry镜像,准备搭建私有库。运行了

weixin_46941625的博客 1万+

基于 YOLOv26 的 PCB 板缺陷检测:工业级视觉实战

本文提出了一种基于YOLOv26的PCB板缺陷检测系统,通过深度学习技术实现对PCB板缺陷的自动化检测。系统能够识别短路、开路、焊点不良等8种常见缺陷,具有高精度、多类别分类和实时推理等优势。文章详细介绍了系统架构,包括数据采集、预处理、YOLOv26模型检测和后处理模块。在代码实现部分,给出了环境配置、数据预处理与增强的具体方法,使用Albumentations库进行图像增强处理。该系统为电子制造业提供了高效、准确的PCB质量检测解决方案,显著提升了检测效率和准确性。

一键难忘的博客 337

第一章:基础知识 - 概念与基础,理解什么是功耗

电源管理与功耗调优:实战项目经验分享

坚韧与专注 885

重启docker报错:container_linux.go:349,process_linux.go:449

2、将SELINUX修改成disabled,如图。

weixin_49070722的博客 1499

实战5:农作物产量预测 蔬菜产量预测 lstm 完整代码数据-可直接运行-计算机毕设

实战5:农作物产量预测 蔬菜产量预测 lstm 完整代码数据-可直接运行-计算机毕设

机器学习深度学习业余选手 1257

OCI runtime create failed: container_linux.go:349……

centos7 部署harbor报错 docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused “process_linux.go:449: container init caused “write /proc/self/attr/keycreate: permission denied””: unknown. cat /e

weixin_46755536的博客 6268

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

已解决 docker: Error response from daemon: OCI runtime create failed: container_linux.go:349

嗨,各位猫头虎博主的小伙伴们!。本文将详细分析该问题的根本原因、解决方法以及如何避免类似的状况。让我们一起来解决这个Bug吧!在云原生应用开发中,Docker是不可或缺的工具,但在使用过程中会遇到各种问题,OCI runtime create失败就是其中之一。本文通过深入分析问题的原因,提供了解决方法和避免类似问题的建议。希望本文能帮助您更好地理解和应对这个常见的Bug。

GoCloudNative - 云原生技术的探索者。 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Docker OCI runtime exec failed: exec failed: container_linux.go:349

OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown OCI runtime exec failed: exec fa...

u011017284的博客 8651

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

docker启动报错问题OCI runtime create failed: container_linux.go:380: starting container process例子解析

如果 SELinux 处于 enforcing 模式,可能会阻止 Docker 正常运行,可以尝试将其设置为 permissive 或 disabled 模式,并重启系统。确保 Docker 容器的配置没有问题,特别是挂载卷的部分,确保挂载的源路径和目标路径类型一致(即目录挂载到目录,文件挂载到文件)。命令查看 Docker 服务的日志,寻找可能的错误提示和警告,这有助于快速定位问题。命令查看 Docker 服务的状态,如果服务未启动,尝试使用。确保你有足够的权限来启动 Docker 服务,可以通过。

IT老农民的博客 1万+

容器启动失败 ERROR: for log Cannot start service log: OCI runtime create failed: container_linux.go:346

完整错误信息: ERROR: for log Cannot start service log: OCI runtime create failed: container_linux.go:346: starting container process caused “process_linux.go:319: getting the final child’s pid from pipe ca...

偶尔记一下 - mybatis.io 2万+

Error response from daemon: OCI runtime create failed: container_linux.go:349

[root@c7-45 docker]# docker run --entrypoint htpasswd registry:2 -Bbn testuser testpassword docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"htpasswd\": executable file not fo

爱吃鱼的小明的博客 3261

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting cont

docker启动容器: docker run -dit --name elk -p 5601:5601 -p 9200:9200 -p 5044:5044 -v E:/spring/elk/opt/elk-data:/var/lib/elasticsearch -v E:/spring/elk/etc/localtime:/et c/localtime sebp/elk:740 错误: docker: Error response from daemon: OCI runtime create failed

八吨车的博客 4215

报错处理:Docker容器无法启动

具体报错:Errorresponsefromdaemon:OCIruntimecreatefailed:container_linux.go:349:startingcontainerprocesscaused"exec:\"program\":executablefilenotfoundin$PATH":unknown.报错环境:该报错出现在使用Dock...

ouyangzhenxin的博客 1565

记录一个docker启动容器报的错Error response from daemon: OCI runtime create failed: container_linux.go:349

这是启动容器报的错,docker logs没有,容器创建了,但是启动不了容器 Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused “process_linux.go:449: container init caused “ro...

一只大码猴 4万+

关于:docker容器启动nginx》Error response from daemon: OCI runtime create failed

Error response from daemon: OCI runtime create failed关于Docker 部署nginx 启动挂载目录报错这边经过尝试可以得到解决 关于Docker 部署nginx 启动挂载目录报错 docker: Error response from daemon: OCI runtime create failed: container_linux.go:3...

薯条的博客 11万+

centos7 docker 启动镜像报错:OCI runtime create failed:container_linux.go:348: starting container process

centos7 docker 启动镜像报错:OCI runtime create failed:container_linux.go:348: starting container process caused "process_linux [root@localhost log]# docker run -ithello-world /bin/dash 解决方案: 更换合适的docker版本: 1.暂停docker : stop docker sudo systemctl stop docker

LXIT_pineapple的博客 2751

Error response from daemon: OCI runtime create failed: container_linux.go:319: getting the final chi

Ubuntu 20.04LTS搭建docker出错: docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:319: getting the final child's pid from pipe caused \"EOF\"": unknown.docker: Error respon

weixin_44546992的博客 6207
上一篇: 猫头虎分享云原生疑难杂Bug:CreateContainerConfigError: failed to create container configuration: invalid volume
下一篇: 猫头虎分享:2024最新 Docker 国内可用镜像源仓库地址(11月26日更新)
AI云原生
博客等级 码龄3年 1万+粉丝 216原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值