Dockerfile: как установить apt mirror на основе выпуска ubuntu - PullRequest
1 голос
/ 27 мая 2020

При создании изображения 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?

1 Ответ

2 голосов
/ 27 мая 2020

Пакет lsb-release не включен в минимальный образ Ubuntu, но вместо него вы можете использовать файл /etc/lsb-release или /etc/os-release (второй широко используется, см. этот ответ для сравнения).

Для Dockerfile просто измените $(lsb_release -cs) на $(. /etc/os-release && echo $VERSION_CODENAME), вы не будете тратить время на обновление и установку пакетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...