Algumas ideias vêm à mente
-
Se você criar imagens de maneira inteligente, poderá combinar as duas técnicas e usar o rsync para a carga inicial e o docker pull para atualizações subseqüentes (já que só será possível extrair camadas alteradas neste momento)
-
Você pode marcar mais camadas. Em vez de ter uma imagem do Docker com 10 camadas, você tem 5 imagens do Docker com duas camadas. Você pode dividir em vários Dockerfiles ou camadas de tags após o fato ("tag docker layerHash tagName" para obter detalhes link )
-
Não positivo neste, mas você deve conseguir exportar camadas únicas em vez de imagens inteiras, especificando o hash da camada. A única diferença entre camadas e "imagens" são imagens que possuem tags legíveis por humanos atribuídas à camada
-
Descompacte a imagem exportada, transfira somente novas camadas e refaça o tar, combinando novas camadas com camadas armazenadas em cache (quando você exporta uma imagem, é apenas um tar com 1 tar por camada)
-
Não use o Docker para construção - apenas monte e execute. Com este, você simplesmente transferiria um rootfs (possivelmente como arquivos regulares e deixaria o rsync manipular a compressão), então tará-los e fazer um Dockerfile simples que só faz
ADD rootfs.tar /
e tem seu comando de execução. Isso garante que nada seja copiado mais do que o necessário
Você também pode combinar essas abordagens com algo como o Bittorrent para distribuir os arquivos