#docker
#docker
Вопрос:
Я знаю, что docker save
могу сохранить изображение в tar и использовать docker load
для перезагрузки изображения.
Например:
У меня есть машины A и B. B, которые не могут подключить концентратор. A — это изображение: последнее, а B — изображение: базовое.
Я должен сохранить несколько изображений в A как некоторый tar-файл, но файлы tar слишком велики для передачи.
Могу ли я сохранить разницу между тегами или идентификаторами изображений в A и загрузить разницу в B?
Не сохранять все изображение, что помогает обновлять патч намного меньше.
Ответ №1:
Это невозможно с использованием стандартных инструментов Docker. Единственный вариант, который docker save
требуется, — это возможность записи в файл, а не в стандартный вывод, и он всегда содержит все родительские слои (и базовые изображения).
Если ваша единственная проблема заключается в переносе изображений, рассмотрите либо методы уменьшения размера изображения (например, используйте многоступенчатое изображение, чтобы не включать зависимости во время сборки в итоговое изображение), либо используйте такие инструменты, как split (1), чтобы разбить файл tar на более мелкие части.
Я полагаю, что docker save
вывод файла tar такой же, как при вызове API «Экспортировать изображение». Возможно, можно вручную отредактировать этот tar-файл для удаления слоев, и могут существовать инструменты, которые это делают. (Однако это не особенно распространенный путь; я изучал его несколько лет назад, но сам этого не делал, и иногда вижу инструменты, упомянутые в нечастых ответах SO.)
В промежутке между стандартным поведением docker pull
и docker save
созданием только полных цепочек изображений, в принципе, нет способа настроить Docker так, чтобы у вас никогда не было только «верхней половины» изображения, но не базовых слоев под этим. Редактирование docker save
файлов tar вручную нарушило бы этот инвариант.
Комментарии:
1. Я использовал многоступенчатый способ уменьшения размера изображения. Но у меня есть несколько изображений для сохранения, и общий размер слишком велик: (