You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac构建基于Debian的Rocker Docker镜像时遇apt源404错误求助

解决Debian Stretch源404导致Docker构建失败的问题

问题背景

从GitHub下载工具XYZ后,使用以下Dockerfile构建镜像:

FROM rocker/r-ver:3.5.0
#Use rocker from well maininted dockerhub as the parent image, will set up as a debian system
#debian:stretch

LABEL software.name="XYZ"
LABEL software.version="XYZ v1.0.0"
LABEL software.description="data_analysis"
LABEL container.base.image="debian"
LABEL tags="calls"

#Install necessary tools onto debian system
run apt-get update
run apt-get --yes install vim
run apt-get --yes install less
run apt-get --yes install parallel
run apt-get --yes install python-pip
run apt-get --yes install curl
run apt-get --yes install libpq-dev
    
#Install necessary R packages used in overlap script
RUN R -e "install.packages('devtools', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('optparse', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('VennDiagram', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('gridExtra', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('dplyr', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('readr', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('DBI', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('RPostgres', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('dbplyr', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('magrittr', repos='http://cran.us.r-project.org/')"
RUN R -e "install.packages('purrr', repos='http://cran.us.r-project.org/')"

#Install tools using pip that will be used in the analysis
run pip install awscli
run pip install boto3
run apt-get --yes install jq

COPY SCRIPTS /SCRIPTS

#ARG s3_folder=

# Run
ENTRYPOINT ["bin/bash",  "/SCRIPTS/overlap.sh"]

#CMD [ "--output_location", "test_data" ]

执行构建命令:

cd XYZ
docker build . -t XYZ

出现核心错误:

E: Failed to fetch http://deb.debian.org/debian/dists/stretch/main/binary-amd64/Packages 404 Not Found
E: Failed to fetch http://security.debian.org/debian-security/dists/stretch/updates/main/binary-amd64/Packages 404 Not Found

原因分析

Debian Stretch(9版本)已停止官方维护,原软件源地址不再提供服务,导致apt-get update无法获取包列表。主机用brew安装依赖无效,因为问题出在容器内部的Debian系统源配置,与主机环境无关。

解决方案

方案1:替换为Debian归档源

在apt-get update前,将系统源列表替换为官方归档源(保留的旧版本镜像),同时合并apt-get install命令减少镜像层数:

#Install necessary tools onto debian system
RUN echo "deb http://archive.debian.org/debian stretch main contrib non-free" > /etc/apt/sources.list
RUN echo "deb http://archive.debian.org/debian-security stretch/updates main contrib non-free" >> /etc/apt/sources.list
RUN apt-get update && apt-get --yes install vim less parallel python-pip curl libpq-dev jq

方案2:升级基础镜像到维护版本

rocker/r-ver:3.5.0基于淘汰的Stretch,建议升级到支持的版本,比如rocker/r-ver:4.2.3(基于Debian Bookworm,长期支持):

  1. 修改镜像基础行:
FROM rocker/r-ver:4.2.3
  1. 适配新版本的包名,Bookworm使用python3-pip替代python-pip,同步调整pip命令:
RUN apt-get update && apt-get --yes install vim less parallel python3-pip curl libpq-dev jq
RUN pip3 install awscli boto3

方案2更推荐,维护中的系统版本安全性和兼容性更有保障。

内容的提问来源于stack exchange,提问作者bio8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:24:55