开发者社区 > 云效DevOps > 正文

云效流水线构建镜像报错:error: failed to solve: rpc error: cod

使用云效流水线构建镜像报错:
error: failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c apt-get update && apt-get install --assume-yes --no-install-recommends apt-utils && apt-get install -y build-essential g++ cmake && apt-get clean]: exit code: 100
报错截图:

image.png

补充说明:云效流水线挂的是自有服务器,系统是centos7的,不是ubuntu。
我的目的是想构建一个同时支持java和c++运行环境的docker容器。dockerfile文件如下:
image.png

展开
收起
7cmmrtuawh6im 2024-01-09 17:49:42 359 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个错误表明在构建镜像的过程中,执行了apt-get update && apt-get这个错误表明在构建镜像的过程中,执行了apt-get update && apt-get install --assume-yes --no-install-recommends apt-utils && apt-get install -y build-essential g++ cmake && apt-get clean`命令时出现了问题。具体的错误信息是:executor failed running [/bin/sh -c apt-get update && apt-get install --assume-yes --no-install-recommends apt-utils && apt-get install -y build-essential g++ cmake && apt-get clean]: exit code: 100。

    这个错误通常是由于网络问题或者软件源的问题导致的。你可以尝试以下方法解决这个问题:

    1. 检查你的网络连接是否正常,确保你可以访问到外部的包管理器(如apt)。
    2. 更换软件源。在执行apt-get update之前,可以先备份原有的软件源配置文件,然后编辑/etc/apt/sources.list文件,将其中的软件源地址替换为其他可用的地址。例如,使用阿里云的镜像源:
    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    
    1. 如果以上方法都无法解决问题,可以尝试手动安装缺失的软件包。首先运行apt-get update,然后运行apt-get install -f来修复依赖关系。
    2024-01-09 21:12:14
    赞同 展开评论 打赏
  • 在云效流水线构建Docker镜像时遇到的错误“error: failed to solve: rpc error: code = Unknown desc = executor failed running ... exit code: 100”表明在执行容器内部的命令时出现了问题。针对您提供的具体错误信息:

    /bin/sh -c apt-get update && apt-get install --assume-yes --no-install-recommends apt-utils && apt-get install -y build-essential g++ cmake && apt-get clean
    

    这个命令序列是在尝试更新包列表并安装一系列开发工具,包括apt-utilsbuild-essentialg++cmake,最后清理缓存。

    当出现exit code: 100时,这通常表示在执行过程中发生了非标准的退出情况。针对这个问题,请尝试以下排查步骤:

    1. 网络问题:确保Docker守护进程在运行时有足够的网络访问权限,并且可以成功连接到APT仓库服务器。如果云效环境下的Docker服务存在网络限制或者代理配置问题,可能会导致apt-get updateapt-get install无法完成。

    2. APT源问题:检查Dockerfile中是否正确设置了APT源(sources.list),以及这些源在当前时间点是否可用。有时由于源服务器不稳定或软件仓库迁移等原因,可能导致下载失败。

    3. 空间不足:确保在执行构建时,容器拥有足够的磁盘空间来下载和安装依赖包。

    4. 临时文件夹问题:有时由于临时文件夹的问题(如/tmp目录满载)也可能导致这类错误。

    5. 特定包依赖问题:检查是否有特定的包在安装时依赖缺失或版本冲突。

    6. 日志分析:查看更详细的日志输出以确定是哪个具体的apt-get操作失败了。错误信息应该会提供更多上下文,比如是否有某个包下载不完整或者安装过程中有其他错误提示。

    解决方案:

    • 尝试单独执行每个apt-get命令,看是哪一步出错。
    • 如果是网络问题,可能需要在流水线中设置正确的代理配置,或者检查阿里云环境中是否有相应的安全组规则或网络策略限制。
    • 确保Dockerfile中的所有RUN指令都是幂等的,即多次执行结果一致,避免因之前执行残留的状态影响后续构建。

    对于云效流水线,你可以在其界面中查看更为详尽的日志记录来定位具体失败原因,然后针对性地解决。

    2024-01-09 21:12:13
    赞同 展开评论 打赏

云效,企业级一站式研发协同平台,数十万企业都在用。支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现多倍效能提升。

热门讨论

热门文章

相关电子书

更多
云效产品升级发布 立即下载
阿里巴巴 研发效能实践案例、DevOps实践指南及 云效产品 立即下载
基于阿里云K8S服务快速构建DevOps流水线 资料下载 立即下载