【问题标题】:The command '/bin/sh -c apk add .... returned a non-zero code: 6命令 '/bin/sh -c apk add .... 返回一个非零代码:6
【发布时间】:2017-10-05 08:18:37
【问题描述】:

docker build 命令没有构建我正在尝试制作的 docker 机器。我搜索了整个网络,我找不到答案。以下是我的dockerfile。我认为问题始于 fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz

FROM python:3.5-alpine
MAINTAINER ******* <code@******.com>


ENV INSTALL_PATH /web
RUN mkdir -p ${INSTALL_PATH}
COPY . ${INSTALL_PATH}
WORKDIR ${INSTALL_PATH}

RUN apk add --no-cache --virtual .build-deps build-base libffi-dev postgresql-dev uwsgi-python supervisor \
        && pip install --trusted-host github.com --process-dependency-links -e . \
        && find /usr/local \( -type d -a -name test -o -name tests \) \
           -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) -exec rm -rf '{}' + \
        && runDeps="$(scanelf --needed --nobanner --recursive /usr/local \
           | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
           | sort -u | xargs -r apk info --installed | sort -u \
        )" \
        && apk add --virtual .rundeps $runDeps && apk del .build-deps

输出如下:

Sending build context to Docker daemon  11.26kB
Step 1/7 : FROM python:3.5-alpine
 ---> 9691bd606b6d
Step 2/7 : MAINTAINER ******* <code@*******.com>
 ---> Using cache
 ---> 71df6ccd567e
Step 3/7 : ENV INSTALL_PATH /web
 ---> Using cache
 ---> 06ced81d3941
Step 4/7 : RUN mkdir -p ${INSTALL_PATH}
 ---> Using cache
 ---> ad857704376d
Step 5/7 : COPY . ${INSTALL_PATH}
 ---> Using cache
 ---> c6ddc57309a2
Step 6/7 : WORKDIR ${INSTALL_PATH}
 ---> Using cache
 ---> 62f0dbfaa3eb
Step 7/7 : RUN apk add --no-cache --virtual .build-deps build-base libffi-dev postgresql-dev uwsgi-python supervisor         && pip install --trusted-host github.com --process-dependency-links -e .         && find /usr/local \( -type d -a -name test -o -name tests \)            -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) -exec rm -rf '{}' +         && runDeps="$(scanelf --needed --nobanner --recursive /usr/local            | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }'            | sort -u | xargs -r apk info --installed | sort -u         )"         && apk add --virtual .rundeps $runDeps && apk del .build-deps
 ---> Running in 1abedb8ada2a
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz: temporary error (try again later)
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz: temporary error (try again later)
ERROR: unsatisfiable constraints:
  .build-deps-0:
    masked in: cache
    satisfies: world[.build-deps]
  build-base (missing):
    required by:
  libffi-dev (missing):
    required by:
  postgresql-dev (missing):
    required by:
  uwsgi-python (missing):
    required by:
  supervisor (missing):
    required by:
The command '/bin/sh -c apk add --no-cache --virtual .build-deps build-base libffi-dev postgresql-dev uwsgi-python supervisor         && pip install --trusted-host github.com --process-dependency-links -e .         && find /usr/local \( -type d -a -name test -o -name tests \)            -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) -exec rm -rf '{}' +         && runDeps="$(scanelf --needed --nobanner --recursive /usr/local            | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }'            | sort -u | xargs -r apk info --installed | sort -u         )"         && apk add --virtual .rundeps $runDeps && apk del .build-deps' returned a non-zero code: 6

【问题讨论】:

    标签: docker docker-compose dockerfile ubuntu-16.04


    【解决方案1】:

    对我来说,通过关闭我的 VPN 解决了​​这个问题。

    【讨论】:

      【解决方案2】:

      在获取过程中,dns 名称服务器无法解析地址。原因可能是有防火墙

      Ubuntu 在 /etc/default/docker 文件中有 google dns 服务器

      DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

      这里有更多解决dns问题的细节Docker - Network calls fail during image build on corporate network

      【讨论】:

        【解决方案3】:

        分离每个命令,看看它们中的哪一个是导致问题的确切原因。而不是使用 && 一个接一个地连接。将带有apk add 的 RUN 命令仅用于一个包,然后以相同的方式为另一个包。

        通过这种方式,您将看到究竟是哪一个导致了问题。

        这仅用于“调试”。解决问题后,您可以再次将它们放在一起。

        【讨论】:

        • 我明白你的想法,这很棒。但是,如果您检查,它会在 RUN apk add 部分失败,该部分包括构建映像,这是使用 docker 时要完成的第一步。我正在寻找的是可以给我提示如何解决此问题的人。谢谢
        • 但是您可以将您的第一个命令从 install libffi-dev postgresql-dev uwsgi-python supervisor 拆分为每个 RUN apk 命令。这样做看看到底是哪一个给你造成了麻烦
        猜你喜欢
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 2021-03-19
        • 1970-01-01
        • 2020-06-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多