【发布时间】:2020-05-27 02:40:37
【问题描述】:
在构建 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},sources.list要根据ubuntu版本调整。
我尝试了$(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源镜像?
【问题讨论】: