Como transfiro uma imagem do Docker de uma máquina para outra sem usar um repositório, independentemente de privado ou público?
Crio minha própria imagem no VirtualBox e, quando termina, tento implantar em outras máquinas para ter um uso real.
Como é baseado em minha própria imagem (como o Red Hat Linux), não pode ser recriado a partir de um Dockerfile. Meu arquivo docker não é facilmente portátil.
Existem comandos simples que posso usar? Ou outra solução?
repo:tag
como referência de imagem do queimage id
. Se você usarimage id
, a imagem carregada não reterá a etiqueta (e você precisará executar outra etapa para marcar a imagem).docker images
e depois usedocker tag DESIREDIMAGEID mycompany/myreponame
. Se o ID da sua imagem for 591de551d6e4, você poderá abreviar o ID da imagem:docker tag 59 mycompany/myreponame
Transferindo uma imagem do Docker via SSH, compactando o conteúdo rapidamente:
Também é uma boa ideia colocar
pv
no meio do canal para ver como está a transferência:(Mais informações sobre
pv
: página inicial , página de manual ).fonte
docker $(docker-machine config mach1) save <image> | docker $(docker-machine config mach2) load
copiar imagens entre as máquinas mach1 e mach2 .eval $(docker-machine env dev)
é bom para comunicação geral com um único host docker, mas não para copiar entre duas máquinas, pois isso envolve dois hosts / máquinas docker diferentes.ssh target_server 'docker save image:latest | bzip2' | pv | bunzip2 | docker load
docker save my_img:v1 | ssh -t -t my_user@my_machine sudo docker load
. Sem a opção "-t", o sudo reclama o sudo: desculpe, você deve ter um tty para executar o sudo ; com um "-t" é a mesma mensagem porque o ssh diz que o pseudo-terminal não será alocado porque stdin não é um terminal. e finalmente, com dois "-t" s, recebo o conteúdo do arquivo tar (ou seja, a imagem) no meu terminal. Alguma ideia?Para salvar uma imagem em qualquer caminho de arquivo ou local NFS compartilhado, consulte o exemplo a seguir.
Obtenha o ID da imagem fazendo:
Digamos que você tenha uma imagem com o ID "dados da matriz".
Salve a imagem com o ID:
Copie a imagem do caminho para qualquer host. Agora importe para a instalação local do Docker usando:
fonte
Primeiro salve a imagem do Docker em um arquivo zip:
Em seguida, carregue a imagem exportada no Docker usando o comando abaixo:
fonte
docker load < my-image.tar.gz
é suficiente. A imagem é descompactada automaticamente para gzip, bzip2 e xz.Corre
para ver uma lista das imagens no host. Digamos que você tenha uma imagem chamada awesomesauce . No seu terminal,
cd
para o diretório para o qual deseja exportar a imagem. Agora execute:Copie o arquivo tar para um pen drive ou qualquer outra coisa e depois copie-o para o novo computador host.
Agora, a partir do novo host, faça:
Agora vá tomar um café e leia o Hacker News ...
fonte
docker save [image] -o file.tar
edocker load -i file.tar
para evitar isso!docker save [image] -o file.tar
também parece ser muito mais rápidoPara uma exportação nivelada do sistema de arquivos de um contêiner, use;
docker export CONTAINER_ID > my_container.tar
Use
cat my_container.tar | docker import -
para importar a imagem.fonte
cat my_container.tar | docker import - my_container:new
, se a importação de acordo localmente para cmd ajudaAo usar a docker-machine, você pode copiar imagens entre máquinas
mach1
emach2
com:E é claro que você também pode ficar
pv
no meio para obter um indicador de progresso:Você também pode omitir uma das
docker-machine config
subconchas, para usar o docker-host padrão atual.copiar a imagem do docker-host atual para
mach
ou
copiar
mach
para o docker-host atual.fonte
Suponho que você precise salvar o
couchdb-cartridge
que possui um ID de imagem 7ebc8510bc2c:Salve a imagem archiveName em um arquivo tar. Vou usar o
/media/sf_docker_vm/
para salvar a imagem.Copie o arquivo archiveName.tar à sua nova instância Docker usando qualquer método funciona em seu ambiente, por exemplo
FTP
,SCP
, etc.Execute o
docker load
comando em sua nova instância do Docker e especifique o local do arquivo tar da imagem.Por fim, execute o
docker images
comando para verificar se a imagem está disponível agora.Por favor, encontre este post detalhado .
fonte
Para transferir imagens da instalação local do Docker para uma VM do minikube:
fonte
docker-push-ssh
é um utilitário de linha de comando que criei apenas para esse cenário.Ele configura um registro Docker privado temporário no servidor, estabelece um encapsulamento SSH a partir do host local, empurra a imagem e depois limpa.
O benefício dessa abordagem
docker save
(no momento em que a maioria das respostas está sendo escrita neste método) é que apenas as novas camadas são enviadas ao servidor, resultando em um upload MUITO mais rápido.Muitas vezes, usar um registro intermediário como o dockerhub é indesejável e complicado.
https://github.com/brthor/docker-push-ssh
Instalar:
Exemplo:
docker-push-ssh -i ~/my_ssh_key [email protected] my-docker-image
A maior ressalva é que você deve adicionar manualmente seu host local à
insecure_registries
configuração do Docker . Execute a ferramenta uma vez e isso fornecerá um erro informativo:Onde devo definir o sinalizador '--insecure-registry' no Mac OS?
fonte
Todas as outras respostas são muito úteis. Acabei de passar pelo mesmo problema e descobri uma maneira fácil
docker machine scp
.Desde o Docker Machine v0.3.0, o scp foi introduzido para copiar arquivos de um computador Docker para outro. Isso é muito conveniente se você deseja copiar um arquivo do computador local para uma máquina Docker remota, como AWS EC2 ou Digital Ocean, porque a Docker Machine está cuidando das credenciais SSH para você.
Salve suas imagens usando
docker save
como:Copiar imagens usando o docker-machine scp
Suponha que sua máquina remota do Docker seja
remote-machine
e o diretório em que você deseja que o arquivo tar seja/home/ubuntu
.Carregar a imagem do Docker
fonte
Quero mover todas as imagens com tags.
Explicação:
Primeiro
OUT
obtém todas as tags, mas separadas por novas linhas. SegundoOUTPUT
obtém todas as tags em uma matriz. Terceiro,$(echo "${OUTPUT[*]}")
coloca todas as tags para um únicodocker save
comando, para que todas as imagens estejam em um único tar.Além disso, isso pode ser compactado usando o gzip. No destino, execute:
-O
opção paratar
colocar o conteúdo em stdin que pode ser acessadodocker load
.fonte
Você pode usar
sshfs
:fonte
Script para executar a função de salvar e carregar do Docker (testado e testado):
Docker Salvar:
Carga do Docker:
fonte
Você pode usar uma linha com a
DOCKER_HOST
variável:fonte