Я хотел бы подготовить среду для контейнера Docker таким образом, чтобы при выполнении apt-get upgrade -s
внутри контейнера результат был таким же, как если бы команда была запущена снаружи на хосте. Это сделано в контексте и в процессе подготовки к добавлению сборщика текста apt.sh
в существующий модуль экспорта узлов Prometheus
. Я уже использую Kubernetes DaemonSet
для управления такими контейнерами (подами) способом, подобным примеру из GitHub prometheus-community / node-exporter-textfile-collector-scripts
. 12285] Судя по странице руководства, 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
внутри.
Однако два запуска по-прежнему дают разные результаты . Что мне не хватает?
Официальная документация 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.