Baixar imagem docker para transferência para máquina não conectada à internet

Estou trabalhando em um escritório onde meu laptop está conectado à internet, mas rigidamente controlado. Não tenho permissão para instalar software não autorizado nele.

Minha estação de trabalho de desenvolvimento é minha a ver com o que eu quiser, mas não tem uma conexão com a internet.

Existe alguma maneira de baixar imagens Docker do hub como um arquivo que eu poderia então sneaker-net para minha estação de trabalho dev? Semelhante a como posso baixar RPMs ou Ruby Gems e gravá-los em CD? Ou é a única maneira de baixar as imagens usando o comando' docker pull'?

Curto: use o save Comando CLI.

https://docs.docker.com/engine/reference/commandline/save/


Você pode puxar a imagem em um computador que tenha acesso à internet.

sudo docker pull ubuntu

Então você pode salvar esta imagem em um arquivo

sudo docker save -o ubuntu_image.docker ubuntu

Transfira o arquivo no computador offline (USB / CD / whatever) e carregue a imagem do arquivo:

sudo docker load -i ubuntu_image.docker

(Em versões mais antigas, isso era apenas docker load image.docker, Veja comentários para mais informações.)

Percebo que já existe uma resposta Aceita, no entanto, queria oferecer essa solução que acho que aborda mais diretamente a pergunta feita: "Como faço para baixar uma imagem do Docker sem usar o Docker para realizar a recuperação?"

Tenho um problema semelhante, em que as políticas da minha empresa exigem que eu forneça a uma equipe o(S) arquivo (S) (normalmente por meio de URL) que desejo usar. Em seguida, eles realizarão várias verificações e auditorias e, em seguida, colocarão o(S) arquivo (s) em nossa rede de desenvolvimento desconectada. Não posso usar o Docker para recuperar o arquivo, exportá-lo e entregá-lo a essa equipe, então a outra resposta fornecida não era uma opção para mim.

Felizmente, eu encontrei presente responda no StackOverflow, que recomenda o uso de uma ferramenta útil fornecida pelo samalba no GitHub: https://github.com/samalba/docker-registry-debug

Claro, essa ferramenta deveria ser construída usando o Docker, e parte do motivo pelo qual preciso é porque não tenho acesso aberto ao Docker :). Então, como eu não tinha essa opção, vou soletrar as etapas que tomei aqui (isso é tudo a partir do commit 05fffc4344fd6f866f84c403caae3ba81193dd45 desse repositório):

$ go get github.com/dustin/go-humanize$ go build$ ./docker-registry-debug --help$ ./docker-registry-debug curlme docker ubuntu

A saída desse comando é uma linha de comando curl completa que pode ser usada para baixar o arquivo:

# Reading user/passwd from env var "USER_CREDS"# No password provided, disabling auth# Getting token from https://index.docker.io# Got registry endpoint from the server: https://registry-1.docker.io# Got token: signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=readcurl -i --location-trusted -I -X GET -H "Authorization: Token signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read" https://registry-1.docker.io/v1/images/ubuntu/layer

Espero que isso ajude outra pessoa!