Dockerfile apt-get кэш вызовет неидентичный контейнер Docker? - PullRequest
1 голос
/ 04 июля 2019

Я читаю документацию по Dockerfile.
Я заметил, что dockerfile будет лучше использовать кеш для улучшения процесса сборки.
Поэтому в документации рекомендуется, чтобы при попытке RUN apt-get update объединить команду со следующей установкой пакета, такой как RUN apt-get update && apt-get install curl, чтобы избежать установки устаревшего пакета из-за кэша.

Мне интересно, что если я скачаю один и тот же файл Docker, но я создаю образ Docker на разных компьютерах в разное время. Поскольку локальный кэш на каждом компьютере, у них все еще есть шанс создать другой докер-контейнер, даже если они запускают один и тот же докер-файл.

Я не сталкивался с этой проблемой. Просто интересно, возможно ли это и как это предотвратить?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

Репозитории Debian APT - это внешние ресурсы, которые регулярно меняются, поэтому, если вы docker build на другом компьютере (или повторите docker build --no-cache на одном компьютере), вы можете получить разные версии пакетов.

С одной стороны, этого трудно избежать. И репозитории Debian, и Ubuntu оперативно удаляют старые версии пакетов: причина в apt-get update и install в одной и той же команде RUN заключается в том, что вчерашний индекс пакетов может ссылаться на файлы пакетов, которых больше нет в сегодняшнем репозитории. В принципе, вы можете обойти эту проблему, вручную загрузив каждый .deb файл, который вам нужен, и вручную dpkg --install их, пропустив сетевой уровень APT.

С другой стороны, это обычно не имеет значения. Как только вы используете выпущенную версию Debian или Ubuntu, обновления пакетов, как правило, ограничиваются обновлениями безопасности и исправлениями ошибок; вы не получите другой основной версии пакета в одной системе против другой. Это не то, что я видел в качестве проблемы, за исключением того, что наличие кэшированного слоя apt-get update может привести к тому, что вы пропустите обновление безопасности, которое вы, возможно, хотели.

1 голос
/ 04 июля 2019

Просто образ докера неизменен.Чтобы Dockerfile сгенерировал один и тот же образ, вам нужно указать точную версию программного обеспечения в команде установки.

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