Я хотел бы подготовить среду для контейнера 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.