Dockerfile:如何根据ubuntu版本设置apt镜像

问题描述 投票:0回答:1

[构建docker映像时,可以通过覆盖/etc/apt/sources.list来设置自定义apt镜像,例如

FROM ubuntu:focal

RUN echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal main restricted universe multiverse" > /etc/apt/sources.list && \
    echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
    echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal-security main restricted universe multiverse" >> /etc/apt/sources.list
...

[如果基本图像是变量,例如FROM ${DISTRO},应根据ubuntu版本调整sources.list

我尝试过$(lsb_release -cs),如下所示:

RUN echo "deb mirror://mirrors.ubuntu.com/mirrors.txt $(lsb_release -cs) main restricted universe multiverse" > /etc/apt/sources.list && \
    echo "deb mirror://mirrors.ubuntu.com/mirrors.txt $(lsb_release -cs)-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
    echo "deb mirror://mirrors.ubuntu.com/mirrors.txt $(lsb_release -cs)-security main restricted universe multiverse" >> /etc/apt/sources.list

但它说lsb_release: not found

解决方法是在运行程序包之前先安装它。

RUN apt-get update && apt-get install -y lsb-release

但是,在某些地区,lsb-release软件包的安装可能非常缓慢。

所以问题是,在使用apt之前是否有适当的方法来设置apt源镜像?

docker ubuntu apt
1个回答
2
投票

lsb-release软件包不包含在最小的Ubuntu映像中,但是您可以改用/etc/lsb-release/etc/os-release文件(第二个是常用的,请参考this answer进行比较)。] >

对于Dockerfile,只需将$(lsb_release -cs)更改为$(. /etc/os-release && echo $VERSION_CODENAME),您就不会在更新和安装软件包上浪费时间。

© www.soinside.com 2019 - 2024. All rights reserved.