镜像构建问题

本文主要为您介绍基础镜像构建的问题汇总与解决方案梳理。

从海外下载基础镜像导致流水线镜像构建任务缓慢

问题描述:当您使用云效进行镜像构建时,如果你的Dockerfile中,指定从dockerhub下载镜像,比如:

  • FROM Nginx

  • FROM java:8

  • FROM openjdk:8-jdk-alpine

Flow在构建时,就会从Dockerhub拉取镜像,由于海外网络延时问题,会导致整体构建速度极其缓慢。典型现象如下:

从 Dockerhub 下载基础镜像 且 构建缓慢

解决方案:按照以下步骤,修改您的 Dockerfile:

  1. 将境外镜像在 pull 到本地。

    docker pull openjdk:8-jdk-alpine

  2. 将基础镜像 push 到阿里云镜像仓库(cr.console.aliyun.com)的国内 region(比如北京、上海等)。

    docker tag openjdk:8-jdk-alpine registry.cn-beijing.aliyuncs.com/yournamespace/openjdk:8-jdk-alpine

    docker push registry.cn-beijing.aliyuncs.com/yournamespace/openjdk:8-jdk-alpine

  3. 修改你的 dockerfile 中 FROM,从你自己的镜像仓库下载镜像 。

    from registry.cn-beijing.aliyuncs.com/yournamespace/openjdk:8-jdk-alpine

以dockerhub镜像作为基础镜像构建失败

问题描述:镜像构建中依赖dockerhub镜像作为基础镜像构建失败,如果判断不是业务代码问题,那么有可能是dockerhub基础镜像升级导致的。

解决方案:以 maven:3-jdk-8 为例,找到最后一次成功的构建日志,如下所示:

[10:45:37] 3-jdk-8: Pulling from library/maven
[10:45:38] Digest: sha256:ff18d86faefa15d1445d0fa4874408cc96dec068eb3487a0fc6d07f359a24607
[10:45:38] Status: Image is up to date for maven:3-jdk-8

复制上述 sha256,在Dockerfile中将基础镜像改成 maven:3-jdk-8@sha256:ff18d86faefa15d1445d0fa4874408cc96dec068eb3487a0fc6d07f359a24607 即可。

Docker 构建出现FROM:... 卡住

这种情况是由于 docker 构建的基础镜像下载不下来,可以把 FROM 的镜像 pull 到本地,再 push 到阿里云镜像服务的仓库 加速镜像构建。

创建Docker build 提示没有权限

请检查 Dockerfile 中的 FROM 镜像是否为公共镜像。

Docker build 的时候找不到 COPY 的文件

请检查 Dockerfile 中使用到的文件在构建后是确实存在的,且 Dockerfile 写的相对 context path 的路径配置正确。

Docker build 的时候克隆代码失败

请检查 Dockerfile 中克隆的代码库是否为公共代码仓库,如果不是需要在 Dockerfile 或基础镜像中对私有代码仓库进行授权。