Download da imagem do Docker para transferência para uma máquina não conectada à Internet

57

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

Minha estação de trabalho de desenvolvimento é minha para fazer o que eu quiser, mas não possui conexão à Internet.

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

shearn89
fonte

Respostas:

87

Curto: use o savecomando da 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

Em seguida, você pode salvar esta imagem em um arquivo

sudo docker save -o ubuntu_image.docker ubuntu

Transfira o arquivo no computador offline (USB / CD / qualquer que seja) 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, consulte os comentários para obter mais informações.)

Booba Skaya
fonte
incrível, vai dar uma volta esta noite. Obrigado!
shearn89
2
Passe, percebeu que eles não usam mais docker load <image>, em vez disso, use docker load < ubuntu_image.docker. docs.docker.com/engine/reference/commandline/load
Lionel Chan
11
tinha que fazer sudo docker load -i ubuntu_image.dockerou que não iria funcionar
John Culviner
Eu tenho a mesma configuração que o @ shearn89, depois de puxar uma máquina local usando o dockertools e mover o arquivo para o ambiente de desenvolvimento. Estou recebendo o erro 'não é possível carregar a imagem do linux no windows'. Tanto a máquina local quanto os ambientes de desenvolvimento são janelas. Você sabe o que esse fluxo de trabalho faz com que uma imagem linux seja criada?
Ryan Haunfelder
27

Sei que já existe uma resposta aceita, no entanto, queria oferecer esta solução, que acho que aborda mais diretamente a pergunta: "Como faço para baixar uma imagem do Docker sem usar o Docker para executar a recuperação?"

Eu tenho um problema semelhante, no qual as políticas da minha empresa exigem que eu forneça a uma equipe os arquivos (geralmente por meio de URL) que quero usar. Em seguida, eles executam várias verificações e auditorias e, em seguida, colocam os arquivos em nossa rede de desenvolvimento desconectada. Não posso usar o Docker para recuperar o arquivo, exportá-lo e entregá-lo a essa equipe; portanto, a outra resposta fornecida não era uma opção para mim.

Felizmente, encontrei esta resposta no StackOverflow, que recomenda o uso de uma ferramenta útil fornecida por samalba no GitHub: https://github.com/samalba/docker-registry-debug

Obviamente, essa ferramenta foi criada para ser criada usando o Docker, e parte do motivo de eu precisar disso é porque não tenho acesso aberto ao Docker :). Portanto, como eu não tinha essa opção, explicarei as etapas que eu segui aqui (tudo isso é como confirmar 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 de ondulação 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=read
curl -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 alguém!

Dan
fonte