При создании изображения docker можно установить настраиваемое зеркальное отражение /etc/apt/sources.list
, например,
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?