从海外下载基础镜像导致流水线镜像构建任务缓慢
问题描述:当您使用云效进行镜像构建时,如果你的 Dockerfile 中,指定下载 dockerhub 的镜像,比如:
FROM Nginx
FROM java:8
FROM openjdk:8-jdk-alpine
Flow 在构建时,就会从 Dockerhub 拉取镜像,由于海外网络问题,会导致整体构建速度极其缓慢。典型现象如下:
解决方案:按照以下步骤,修改您的 Dockerfile:
将境外镜像在 pull 到本地。
docker pull openjdk:8-jdk-alpine
将基础镜像 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
修改你的 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 即可。