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'?

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.)


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!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.