Я обслуживаю несколько серверов, которые расположены в очень плохо связанных удаленных местах по всему миру. Эти серверы запускают несколько док-контейнеров, некоторые из которых основаны на довольно больших изображениях (мы прилагаем отдельные усилия для уменьшения этого, но это более долгосрочный период).
Эти серверы доступны только через обратные SSH-туннели, и сетевые подключения очень часто теряются. Пропускная способность в целом также довольно низкая (иногда только ~ 50 кбит / с или даже меньше).
AFAIK, у меня есть два варианта для передачи изображений, каждый с некоторыми проблемами.
Использование Docker репозитория и Docker Pull:
- Не справляется с перебоями в сети, вся загрузка перезапускается с нуля.
- Не перезагружает уже загруженные слои, сокращая время и пропускную способность, используемые для загрузки более новых версий, только с изменениями в верхних слоях.
Использование docker save, rsync и docker load:
- Rsync позволяет продолжить частичную загрузку, мы можем начать загрузку и повторить попытку до конца.
- Можно сохранить и передать только все изображение, включая все слои. Таким образом, мы должны загрузить полное изображение, даже если только пара килобайт в верхнем слое изменилась по сравнению с предыдущей версией.
Итак, мой вопрос, есть ли другой способ передачи этих изображений, который сочетает в себе преимущества обоих подходов? Так что же может возобновить прерванную загрузку, но не требует загрузки полных изображений каждый раз?