Назад | Перейти на главную страницу

Запустите 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 внутри.

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

Официальная документация Fro docker:

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.