Eu tenho uma imagem do Docker que eu criei:
» docker images --no-trunc | grep discoball/nginx
discoball/nginx latest 623444f1777c 21 hours ago 126 MB
Eu gostaria de mover isso para um servidor remoto; docker save
e docker load
parecem ser comandos capazes de serializar e desserializar uma imagem para / de um arquivo, que deve ser exatamente o que eu preciso. No entanto, não consigo fazer isso funcionar.
Salvei a imagem:
» docker save discoball/nginx > nginx-latest.tar.gz
Em seguida, tente restaurá-lo no controle remoto:
» cat nginx-latest.tar.gz | ssh "$IP" docker load
Esse comando é executado com sucesso. No entanto, docker images
no controle remoto indica que a imagem não foi gerada; em vez disso, o que parece ser uma versão antiga ainda está presente:
» ssh "$IP" docker images --no-trunc | grep discoball/nginx
discoball/nginx latest 2678dc27dd46 21 hours ago 126 MB
Observe que o ID da imagem é diferente. Eu estou supondo que esta é uma versão antiga da minha imagem. A pesquisa pelo ID da imagem em si também não produz resultados no servidor:
» ssh "$IP" docker images --all | grep 623444
(last command returned 1.)
»
O que estou fazendo de errado?
Então, agora estou pesquisando no arquivo .tar.gz
gerado; o arquivo repositories
parece indicar que a máquina remota está certa:
» tar -xf nginx-latest.tar.gz -O repositories
{"discoball/nginx":{"latest":"2678dc27dd46469bc8692c2e5ad71b57ae573b1444531fcd1f76798638f84f5c"}}
Esse é o número que vejo no controle remoto. Mas por que diabos o docker save
escreveu isso, e não 623444f1777c
? (Os IDs de imagem do docker não são apenas hashes criptográficos da imagem e / ou da camada?) Se o remoto tiver a mesma imagem, por que ele possui uma ID de imagem diferente? (Eu não sei como verificar isso no momento, porque até esse momento, eu teria dito que "mesma imagem" era "ID da mesma imagem" ...)
Tags docker