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

将依赖项纳入Docker镜像的方法及基础镜像可用性疑问

关于Docker镜像依赖与旧版本镜像可用性的问题解答

1. 如何将依赖项纳入Docker镜像?

根据依赖类型的不同,有几种常见的实现方式:

  • 系统级依赖包:通过Dockerfile的RUN命令直接从系统包管理器安装,比如Ubuntu/Debian系统使用apt-get:
    RUN apt-get update && apt-get install -y --no-install-recommends \
        nginx \
        curl \
        && rm -rf /var/lib/apt/lists/*
    
    加上--no-install-recommends和清理apt缓存的命令,可以避免镜像体积过大。
  • 语言/框架依赖:先将依赖清单文件复制到镜像中,再执行对应的安装命令,比如Python项目:
    COPY requirements.txt /app/
    RUN pip install --no-cache-dir -r /app/requirements.txt
    
    Node.js项目则可以复制package.json和package-lock.json后执行npm install。
  • 本地自定义安装程序:如果依赖的是自己编译或下载的安装包(如.deb、.tar.gz),先将文件复制到镜像内,再执行安装命令:
    COPY my-custom-tool.tar.gz /tmp/
    RUN cd /tmp && tar -xzf my-custom-tool.tar.gz && \
        ./install.sh && \
        rm -rf /tmp/my-custom-tool*
    

2. 为什么FROM ubuntu:14.0现在能下载,5年后可能无法获取?

讲师的说法是完全正确的,原因在于:

  • 操作系统发行版(比如Ubuntu)有生命周期(EOL,End of Life),旧版本停止维护后,官方会下架对应的软件源,同时Docker Hub上的官方镜像仓库也会移除这些不再支持的版本。
  • 你现在能下载是因为当前该版本还在官方支持范围内(或归档仓库仍可访问),但一旦过了生命周期,官方会停止提供镜像文件和软件源服务,后续执行docker build时就会出现拉取镜像失败的情况,即使本地曾经下载过镜像,一旦本地缓存被清理或需要在新环境构建,就无法重新获取该版本镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:24:18