开发者社区 > 云效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 501 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
    赞同 展开评论 打赏

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

热门讨论

热门文章

相关电子书

更多
云效2.0-智能化运维平台 立即下载
云效助力企业软件供应链生产效能提升 立即下载
基于便宜云服务器K8S服务快速构建DevOps流水线 资料下载 立即下载
http://www.vxiaotou.com