/ bin / sh -c apk --no-cache返回非零代码4

时间:2019-07-02 15:39:58

标签: docker jenkins

Jenkins构建在除一个节点上的所有节点上均失败 构建docker映像时出现错误

Could not build image: The command '/bin/sh -c apk --no-cache update &&     apk --no-cache add python py-pip py-setuptools ca-certificates groff &&     pip --no-cache-dir install cfn-lint &&     pip --no-cache-dir install awscli==${AWS_CLI_VERSION}' returned a non-zero code: 4 -> [Help 1]

我的docker文件是

FROM openjdk:8-jre-alpine

# Versions: https://pypi.python.org/pypi/awscli#downloads
ENV AWS_CLI_VERSION 1.16.100

RUN apk --no-cache update && \
    apk --no-cache add python py-pip py-setuptools ca-certificates groff && \
    pip --no-cache-dir install cfn-lint && \
    pip --no-cache-dir install awscli==${AWS_CLI_VERSION}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

刚刚测试过,它对我有用,因此可能与某些网络问题有关。我的建议是尝试将此RUN命令分解为多个RUN(或至少分为两个),以便找出哪个命令返回错误代码4

FROM openjdk:8-jre-alpine

# Versions: https://pypi.python.org/pypi/awscli#downloads
ENV AWS_CLI_VERSION 1.16.100

RUN apk --no-cache update && \
    apk --no-cache add python py-pip py-setuptools ca-certificates groff

RUN pip --no-cache-dir install cfn-lint && \
    pip --no-cache-dir install awscli==${AWS_CLI_VERSION}

一个假设

由于apk使用wget

  

除本地存储库外,apk实用程序还使用busybox wget通过http:,https:或ftp:协议获取软件包。以下是有效的存储库文件:

错误代码4可能来自wget,如果是这样,则表示是

  

网络故障。

因此,我的猜测是某些代理无法访问软件包下载位置。请检查您是否可以从这些代理访问http://dl-cdn.alpinelinux.org。为此,请尝试在wget进行的首次抓取中在Dockerfile中运行apk

RUN wget http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz

答案 1 :(得分:0)

我遇到了类似的问题,我不得不从〜/ .docker / config.json中删除无效的“代理”条目