#docker #docker-ima&e #docker-daemon
#docker #docker-ima&e #docker-daemon
Вопрос:
Мое приложение запускается в контейнере Docker, и я использую автономное развертывание, где я
docker save
изображение на моей машине разработки и свяжите его с приложением- вручную перенесите пакет tarfile и моего приложения через USB-накопитель
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 для «взлома»
что я сделал:
-
я сохранил изображение docker, например, «mymon&o: latests», в tar-файл, давайте назовем его x.tar
-
Я автоматически запустил свой скрипт и извлек из tar файл «репозитории» 3, который на самом деле содержит json, подобный
{«mymon&o»:{«latest»:»someId»}}
-
проанализируйте это как json, потому что myMon&o — это изображение, а latest — тег
Комментарии:
1. Спасибо, что поделились своим подходом, но я считаю, что у нас здесь недопонимание. Я не пытаюсь извлечь
IMAGE:TAG
информацию изtar
файла, потому что это всего лишь «указатели», а разные изображения могут быть помечены одинаково в разное время / на разных компьютерах. Мне нужно знать, действительно ли содержимое изображения одинаковое, и поэтому я могу пропуститьdocker save
(компьютер разработчика) и / илиdocker load
(целевой компьютер).2. Привет @FelixL. значит, вы хотите сравнить изображения?
3. Да, и я ожидаю, что смогу сравнивать по хэшу sha256: .., который фактически является контрольной суммой, вместо сравнения содержимого слоев. Как упоминалось в моем вопросе, я заметил, что слои RootFS одинаковы, так что это уже кое-что. Просто не уверен, достаточно ли этого для сравнения, чтобы заключить равенство. Конечно, изображение состоит из всех его слоев, но могут быть дополнительные данные, о которых я не знаю. Я надеялся найти что-то вроде общей контрольной суммы, из которой я могу в конечном итоге заключить равенство.
4. почему бы просто не сравнить «дату создания»??? чем новее, тем лучше 🙂