docker - GitLab 管道 Docker 构建卡在 apk 上

标签 docker gitlab gitlab-ci gitlab-ci-runner openshift-origin

尝试制作一个简单的 GitLab 管道,为 Alpine Linux + Openshift CLI 构建 Docker 镜像。

这是代码:

FROM frolvlad/alpine-glibc:latest

MAINTAINER Daniel Widerin <daniel@widerin.net>

ENV OC_VERSION=v3.11.0 \
    OC_TAG_SHA=0cbc58b \
    BUILD_DEPS='tar gzip' \
    RUN_DEPS='curl ca-certificates gettext'

RUN apk --no-cache add $BUILD_DEPS $RUN_DEPS && \
    curl -sLo /tmp/oc.tar.gz https://github.com/openshift/origin/releases/download/${OC_VERSION}/openshift-origin-client-tools-${OC_VERSION}-${OC_TAG_SHA}-linux-64bit.tar.gz && \
    tar xzvf /tmp/oc.tar.gz -C /tmp/ && \
    mv /tmp/openshift-origin-client-tools-${OC_VERSION}-${OC_TAG_SHA}-linux-64bit/oc /usr/local/bin/ && \
    rm -rf /tmp/oc.tar.gz /tmp/openshift-origin-client-tools-${OC_VERSION}-${OC_TAG_SHA}-linux-64bit && \
    apk del $BUILD_DEPS

CMD ["/bin/sh"]

现在由于某种原因,在运行管道时它会卡在 curl 上。下载 openshift 存档的部分。
Status: Downloaded newer image for frolvlad/alpine-glibc:latest
 ---> 38dd85a430e8
Step 2/5 : MAINTAINER Daniel Widerin <daniel@widerin.net>
 ---> Running in bdacc7e92e79
Removing intermediate container bdacc7e92e79
 ---> c56da0a68f7f
Step 3/5 : ENV OC_VERSION=v3.11.0     OC_TAG_SHA=0cbc58b     BUILD_DEPS='tar gzip'     RUN_DEPS='curl ca-certificates gettext'
 ---> Running in cb1e6cdb39ca
Removing intermediate container cb1e6cdb39ca
 ---> 727952120e67
Step 4/5 : RUN apk --no-cache add $BUILD_DEPS $RUN_DEPS &&     curl -sLo /tmp/oc.tar.gz https://github.com/openshift/origin/releases/download/${OC_VERSION}/openshift-origin-client-tools-${OC_VERSION}-${OC_TAG_SHA}-linux-64bit.tar.gz &&     tar xzvf /tmp/oc.tar.gz -C /tmp/ &&     mv /tmp/openshift-origin-client-tools-${OC_VERSION}-${OC_TAG_SHA}-linux-64bit/oc /usr/local/bin/ &&     rm -rf /tmp/oc.tar.gz /tmp/openshift-origin-client-tools-${OC_VERSION}-${OC_TAG_SHA}-linux-64bit &&     apk del $BUILD_DEPS
 ---> Running in ef344ef4a96b
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz

它保持这样一个小时,直到管道超时。

手动尝试了相同的 Dockerfile,它工作正常。

如何诊断此问题?我怎样才能找到任何日志?

最佳答案

发现此问题与在基于 Kubernetes/OpenShift 的运行器上以 Docker-in-Docker 配置运行时存在网络问题的 Alpine 镜像有关。添加 --network hostDocker build有助于解决这个问题。

Docker build --network host .

相关 GitHub 问题:github.com/gliderlabs/docker-alpine/issues/307

关于docker - GitLab 管道 Docker 构建卡在 apk 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59503454/

相关文章:

Docker 镜像存在,但 "docker run"找不到它

macos - 在后台运行 `tail -f` 而在前台运行 `docker exec -it` 时不应用回车符

mysql - 如何在数据库docker容器中创建数据库?

jenkins - 在测试失败或成功的情况下如何更改 Jenkins Pipeline Gitlab 状态?

gradle - 如何设置 GitLab CI 以高效运行多个构建步骤,同时指示它在哪一步?

docker - Docker容器由于apparmor而无法启动,为什么?

python - Gitlab CI 在 Python 脚本输出中换行

GitLab 手 Action 业 on_failure 和自动 on_success

sonarqube - 在 Gitlab README.md 中使用 SonarQube 徽章中的 Gitlab 变量

docker - Gitlab-runner + Docker + Windows - 卷规范无效