Ubuntu构建Docker镜像安装apache web server时出现Failed to fetch错误
问题原因
该报错是因为你使用的Ubuntu基础镜像中缓存的APT软件源索引已过期,索引内记录的apache2、tzdata、ca-certificates等软件包的旧版本下载链接已经被官方源移除,因此请求返回404错误。你之前执行update操作后依然报错,大概率是Docker缓存了旧的镜像层导致的。
解决方案
- 调整Dockerfile的指令写法,将
apt update和apt install合并在同一个RUN指令中,避免Docker复用旧的update缓存层,同时可以增加清理步骤减小镜像体积:
# 正确写法示例 RUN apt-get update && \ apt-get install -y apache2 && \ rm -rf /var/lib/apt/lists/*
- 构建镜像时添加
--no-cache参数,强制跳过所有镜像缓存,执行完整构建流程:
docker build --no-cache -t 你的镜像名称 .
- 如果官方源访问不稳定,可在执行update前先替换为国内镜像源,以下是替换为清华源的示例(适配Ubuntu 20.04版本):
RUN sed -i "s@http://.*archive.ubuntu.com@http://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list && \ sed -i "s@http://.*security.ubuntu.com@http://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list && \ apt-get update && \ apt-get install -y apache2 && \ rm -rf /var/lib/apt/lists/*
内容的提问来源于stack exchange,提问作者IKS
相关产品推荐
相关产品推荐

