Запустите apt-get upgrade -s в контейнере и ожидайте тот же результат, что и при запуске на хосте

Я хотел бы подготовить среду для контейнера Docker таким образом, чтобы при apt-get upgrade -s выполняется внутри контейнера, его результат такой же, как если бы команда выполнялась снаружи на хосте. Это в контексте и в процессе подготовки к добавлению сборщика текста apt.sh к существующему Прометею node-exporter, Я уже использую Kubernetes DaemonSet управлять такими контейнерами (модулями), как в примере с GitHub prometheus-community/node-exporter-textfile-collector-scripts,

Судя по его справочной странице, apt-get работает с файлами в /etc/apt, /var/cache/apt, а также /var/lib/apt, и поэтому мой контейнер монтирует эти данные только для чтения с хоста. В настоящее время мой хост и контейнер работают под управлением Debian 9 (Stretch) и Debian 10 (Buster) соответственно. Я объясняю это, запустив apt-get upgrade -s вне контейнера и apt-get upgrade -s -t stretch внутри.

Однако два прогона по-прежнему дают разные результаты. Что мне не хватает?

1 ответ

Для официальной документации докера:

APT-GET
Probably the most common use-case for RUN is an application of apt-get. Because it installs packages, the RUN apt-get command has several gotchas to look out for.

Avoid RUN apt-get upgrade and dist-upgrade, as many of the “essential” packages from the parent images cannot upgrade inside an unprivileged container.

If a package contained in the parent image is out-of-date, contact its maintainers. 
Другие вопросы по тегам