загрузка docker: проверьте, обновлен ли

#docker #docker-ima&e #docker-daemon

#docker #docker-ima&e #docker-daemon

Вопрос:

Мое приложение запускается в контейнере Docker, и я использую автономное развертывание, где я

  1. docker save изображение на моей машине разработки и свяжите его с приложением
  2. вручную перенесите пакет tarfile и моего приложения через USB-накопитель
  3. docker load это на целевой машине (цель не подключена к сети)

Шаги 1 и 3 выполняются скриптами BASH (Linux).

Обновления приложений часто не требуют обновления образа Docker, и поскольку docker save и docker load выполняются довольно медленно и требуют больших ресурсов, я хотел бы по возможности избегать этих шагов.

Есть ли способ узнать, соответствует ли tar отредактированное изображение изображению IMAGE:TAG в моем демоне Docker?

Я попробовал skopeo inspect docker-archive:... против docker ima&e inspect ... вывода для сравнения, но, похоже, нет идентификатора изображения для сравнения. Я видел, что уровни RootFS равны, но является ли это надежной гарантией, что я могу пропустить docker save / docker load ?

Ответ №1:

docker до сих пор не поддерживает эту функцию, но я решил аналогичную проблему, используя bash для «взлома»

что я сделал:

  1. я сохранил изображение docker, например, «mymon&o: latests», в tar-файл, давайте назовем его x.tar

  2. Я автоматически запустил свой скрипт и извлек из tar файл «репозитории» 3, который на самом деле содержит json, подобный

    {«mymon&o»:{«latest»:»someId»}}

  3. проанализируйте это как json, потому что myMon&o — это изображение, а latest — тег

Комментарии:

1. Спасибо, что поделились своим подходом, но я считаю, что у нас здесь недопонимание. Я не пытаюсь извлечь IMAGE:TAG информацию из tar файла, потому что это всего лишь «указатели», а разные изображения могут быть помечены одинаково в разное время / на разных компьютерах. Мне нужно знать, действительно ли содержимое изображения одинаковое, и поэтому я могу пропустить docker save (компьютер разработчика) и / или docker load (целевой компьютер).

2. Привет @FelixL. значит, вы хотите сравнить изображения?

3. Да, и я ожидаю, что смогу сравнивать по хэшу sha256: .., который фактически является контрольной суммой, вместо сравнения содержимого слоев. Как упоминалось в моем вопросе, я заметил, что слои RootFS одинаковы, так что это уже кое-что. Просто не уверен, достаточно ли этого для сравнения, чтобы заключить равенство. Конечно, изображение состоит из всех его слоев, но могут быть дополнительные данные, о которых я не знаю. Я надеялся найти что-то вроде общей контрольной суммы, из которой я могу в конечном итоге заключить равенство.

4. почему бы просто не сравнить «дату создания»??? чем новее, тем лучше 🙂